1. 27 12月, 2011 16 次提交
    • M
      [S390] cleanup trap handling · aa33c8cb
      Martin Schwidefsky 提交于
      Move the program interruption code and the translation exception identifier
      to the pt_regs structure as 'int_code' and 'int_parm_long' and make the
      first level interrupt handler in entry[64].S store the two values. That
      makes it possible to drop 'prot_addr' and 'trap_no' from the thread_struct
      and to reduce the number of arguments to a lot of functions. Finally
      un-inline do_trap. Overall this saves 5812 bytes in the .text section of
      the 64 bit kernel.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      aa33c8cb
    • H
      [S390] Remove Kerntypes leftovers · 679e2ea7
      Heiko Carstens 提交于
      Remove last traces of our kerntypes patch which was always an addon
      patch which never got upstream. Somehow a few bits got upstream
      anyway.
      Since kerntypes aren't used anymore and lcrash isn't maintained (for
      s390 at least) remove the last traces of kerntypes that somehow went
      upstream. Also remove the documentation that mentions lcrash.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      679e2ea7
    • H
      [S390] topology: increase poll frequency if change is anticipated · d68bddb7
      Heiko Carstens 提交于
      Increase cpu topology change poll frequency if a change is anticipated.
      Otherwise a user might be a bit confused to have to wait up to a minute
      in order to see a change this should be visible immediatly.
      However there is no guarantee that the change will happen during the
      time frame the poll frequency is increased.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      d68bddb7
    • M
      [S390] entry[64].S improvements · c5328901
      Martin Schwidefsky 提交于
      Another round of cleanup for entry[64].S, in particular the program check
      handler looks more reasonable now. The code size for the 31 bit kernel
      has been reduced by 616 byte and by 528 byte for the 64 bit version.
      Even better the code is a bit faster as well.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c5328901
    • J
      [S390] make arch/s390 subdirectories depend on config option · 3b7f9933
      Jan Glauber 提交于
      Only add subdirectories of arch/s390 to kbuild if their respective
      config option is selected.
      Signed-off-by: NJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      3b7f9933
    • M
      [S390] kvm: move cmf host id constant out of lowcore · ddd6f953
      Martin Schwidefsky 提交于
      There is no reason for the cpu-measurement-facility host id constant to
      reside in the lowcore where space is precious. Use an entry in the literal
      pool in HANDLE_SIE_INTERCEPT and a stack slot in sie64a.
      While we are at it replace the id -1 with 0 to indicate host execution.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      ddd6f953
    • H
      [S390] topology: cleanup z10 topology handling · 4baeb964
      Heiko Carstens 提交于
      Cleanup z10 topology handling. This adds some more code but hopefully
      the result is more readable and easier to maintain.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      4baeb964
    • C
      [S390] disable MACHINE_IS_VM check for pfault · f32269a0
      Carsten Otte 提交于
      This patch disables the check for MACHINE_IS_VM when initializing the
      pfault infrastructure. The code checks for successful completion of
      diag 258 anyway, thus it's safe to try initialization on LPAR anyway.
      This is needed to use pfault on kvm
      Signed-off-by: NCarsten Otte <cotte@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      f32269a0
    • H
      [S390] topology: get rid of ifdefs · 83a24e32
      Heiko Carstens 提交于
      Remove all ifdefs from topology code and also only compile it for the
      CONFIG_SCHED_BOOK case. The new code selects SCHED_MC if SCHED_BOOK is
      selected. SCHED_MC without SCHED_BOOK is not possible anymore.
      Furthermore various sysfs attributes are not available anymore for the
      !SCHED_BOOK case. In particular all attributes that correspond to
      CPU polarization.
      But since all real world kernels have SCHED_BOOK selected anyway this
      doesn't matter too much.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      83a24e32
    • M
      [S390] kernel: Fix smp_switch_to_ipl_cpu() stack frame setup · 3931723f
      Michael Holzheu 提交于
      Currently, when smp_switch_to_ipl_cpu() is done, the backchain in the dump
      analysis tool crash looks like the following:
      
       #0 [1f746e70] __machine_kexec at 11dd92
       #1 [1f746eb8] smp_restart_cpu at 11820e
       #0 [00907eb0] cpu_idle at 10602e
       #1 [00907ef8] start_kernel at 979a08
      
      It would be good to see the registers of the interrupted function.
      To achieve this, the backchain on the new stack has to be set to zero.
      This looks then like the following:
      
       #0 [1f746e70] __machine_kexec at 11dd8e
       #1 [1f746eb8] smp_restart_cpu at 11820a
       PSW:  0706000180000000 00000000005c6fe6 (vtime_stop_cpu+134)
       GPRS: 0000000000000000 00000000005c6fe6 0000000001ad0228 0000000001ad0248
             0000000000907f08 0000000001ad0b40 0000000000979344 0000000000000000
             00000000009c0000 00000000009c0010 00000000009ab024 0000000001ad0200
             0000000001ad0238 00000000005cc9d8 000000000010602e 0000000000907e68
       #0 [00907eb0] cpu_idle at 10602e
       #1 [00907ef8] start_kernel at 979a08
      
      In addition to this, now also the correct PSW is stored in the pt_regs
      structure that is located at the start of the panic stack.
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      3931723f
    • M
      [S390] add support for physical memory > 4TB · 14045ebf
      Martin Schwidefsky 提交于
      The kernel address space of a 64 bit kernel currently uses a three level
      page table and the vmemmap array has a fixed address and a fixed maximum
      size. A three level page table is good enough for systems with less than
      3.8TB of memory, for bigger systems four page table levels need to be
      used. Each page table level costs a bit of performance, use 3 levels for
      normal systems and 4 levels only for the really big systems.
      To avoid bloating sparse.o too much set MAX_PHYSMEM_BITS to 46 for a
      maximum of 64TB of memory.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      14045ebf
    • M
    • M
      [S390] Rework create_mem_hole() function · 44e5ddc4
      Michael Holzheu 提交于
      This patch makes the create_mem_hole() function more readable and
      fixes some minor bugs (e.g. off-by-one problems).
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      44e5ddc4
    • C
      [S390] kvm: fix sleeping function ... at mm/page_alloc.c:2260 · c86cce2a
      Christian Borntraeger 提交于
      commit cc772456
          [S390] fix list corruption in gmap reverse mapping
      
      added a potential dead lock:
      
      BUG: sleeping function called from invalid context at mm/page_alloc.c:2260
      in_atomic(): 1, irqs_disabled(): 0, pid: 1108, name: qemu-system-s39
      3 locks held by qemu-system-s39/1108:
       #0:  (&kvm->slots_lock){+.+.+.}, at: [<000003e004866542>] kvm_set_memory_region+0x3a/0x6c [kvm]
       #1:  (&mm->mmap_sem){++++++}, at: [<0000000000123790>] gmap_map_segment+0x9c/0x298
       #2:  (&(&mm->page_table_lock)->rlock){+.+.+.}, at: [<00000000001237a8>] gmap_map_segment+0xb4/0x298
      CPU: 0 Not tainted 3.1.3 #45
      Process qemu-system-s39 (pid: 1108, task: 00000004f8b3cb30, ksp: 00000004fd5978d0)
      00000004fd5979a0 00000004fd597920 0000000000000002 0000000000000000
             00000004fd5979c0 00000004fd597938 00000004fd597938 0000000000617e96
             0000000000000000 00000004f8b3cf58 0000000000000000 0000000000000000
             000000000000000d 000000000000000c 00000004fd597988 0000000000000000
             0000000000000000 0000000000100a18 00000004fd597920 00000004fd597960
      Call Trace:
      ([<0000000000100926>] show_trace+0xee/0x144)
       [<0000000000131f3a>] __might_sleep+0x12a/0x158
       [<0000000000217fb4>] __alloc_pages_nodemask+0x224/0xadc
       [<0000000000123086>] gmap_alloc_table+0x46/0x114
       [<000000000012395c>] gmap_map_segment+0x268/0x298
       [<000003e00486b014>] kvm_arch_commit_memory_region+0x44/0x6c [kvm]
       [<000003e004866414>] __kvm_set_memory_region+0x3b0/0x4a4 [kvm]
       [<000003e004866554>] kvm_set_memory_region+0x4c/0x6c [kvm]
       [<000003e004867c7a>] kvm_vm_ioctl+0x14a/0x314 [kvm]
       [<0000000000292100>] do_vfs_ioctl+0x94/0x588
       [<0000000000292688>] SyS_ioctl+0x94/0xac
       [<000000000061e124>] sysc_noemu+0x22/0x28
       [<000003fffcd5e7ca>] 0x3fffcd5e7ca
      3 locks held by qemu-system-s39/1108:
       #0:  (&kvm->slots_lock){+.+.+.}, at: [<000003e004866542>] kvm_set_memory_region+0x3a/0x6c [kvm]
       #1:  (&mm->mmap_sem){++++++}, at: [<0000000000123790>] gmap_map_segment+0x9c/0x298
       #2:  (&(&mm->page_table_lock)->rlock){+.+.+.}, at: [<00000000001237a8>] gmap_map_segment+0xb4/0x298
      
      Fix this by freeing the lock on the alloc path. This is ok, since the
      gmap table is never freed until we call gmap_free, so the table we are
      walking cannot go.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c86cce2a
    • M
      [S390] Check for NULL termination in command line setup · 1fb81057
      Michael Holzheu 提交于
      The current code in setup_boot_command_line() uses a heuristic to
      detect an EBCDIC command line. It checks if any of the bytes in
      the command line has bit one (0x80) set. In that case it is assumed
      that we have an EBCDIC string and the complete command line is
      converted.
      
      On s390 there are cases where the boot loader provides a kernel
      command line that is NULL terminated, but has random data after
      the NULL termination. In that case, setup_boot_command_line()
      might misinterpret an ASCII string for an EBCDIC string. A
      subsequent string conversion can then damage the ASCII string.
      
      This patch solves the problem by checking for NULL termination.
      If no EBCDIC character has been found until the the NULL
      termination has been found, we now assume that we have an ASCII
      string.
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      1fb81057
    • H
      [S390] irq: fix accounting of external call/emergency signal · 272f01bf
      Heiko Carstens 提交于
      Mask the extint_code parameter of the smp external interrupt handler
      to get the interruption code. Otherwise emergency call interrupts
      erroneously might be accounted as emergency signal interrupts.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      272f01bf
  2. 20 12月, 2011 1 次提交
  3. 01 12月, 2011 5 次提交
  4. 17 11月, 2011 4 次提交
  5. 14 11月, 2011 9 次提交
  6. 03 11月, 2011 3 次提交
    • A
      thp: share get_huge_page_tail() · b35a35b5
      Andrea Arcangeli 提交于
      This avoids duplicating the function in every arch gup_fast.
      Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: David Gibson <david@gibson.dropbear.id.au>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b35a35b5
    • A
      s390: gup_huge_pmd() return 0 if pte changes · 0693bc9c
      Andrea Arcangeli 提交于
      s390 didn't return 0 in that case, if it's rolling back the *nr pointer it
      should also return zero to avoid adding pages to the array at the wrong
      offset.
      Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: David Gibson <david@gibson.dropbear.id.au>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0693bc9c
    • A
      s390: gup_huge_pmd() support THP tail recounting · 220a2eb2
      Andrea Arcangeli 提交于
      Up to this point the code assumed old refcounting for hugepages (pre-thp).
      This updates the code directly to the thp mapcount tail page refcounting.
      Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: David Gibson <david@gibson.dropbear.id.au>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      220a2eb2
  7. 02 11月, 2011 2 次提交