1. 27 2月, 2010 1 次提交
  2. 23 9月, 2009 1 次提交
  3. 11 9月, 2009 1 次提交
  4. 14 4月, 2009 1 次提交
  5. 26 3月, 2009 1 次提交
  6. 18 3月, 2009 1 次提交
    • M
      [S390] make page table walking more robust · f481bfaf
      Martin Schwidefsky 提交于
      Make page table walking on s390 more robust. The current code requires
      that the pgd/pud/pmd/pte loop is only done for address ranges that are
      below the end address of the last vma of the address space. But this
      is not always true, e.g. the generic page table walker does not guarantee
      this. Change TASK_SIZE/TASK_SIZE_OF to reflect the current size of the
      address space. This makes the generic page table walker happy but it
      breaks the upgrade of a 3 level page table to a 4 level page table.
      To make the upgrade work again another fix is required.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      f481bfaf
  7. 25 12月, 2008 1 次提交
  8. 02 8月, 2008 1 次提交
  9. 14 7月, 2008 2 次提交
  10. 30 4月, 2008 1 次提交
  11. 17 4月, 2008 1 次提交
    • C
      [S390] kernel: show last breaking-event-address on oops · 9e74a6b8
      Christian Borntraeger 提交于
      Newer s390 models have a breaking-event-address-recording register.
      Each time an instruction causes a break in the sequential instruction
      execution, the address is saved in that hardware register. On a program
      interrupt the address is copied to the lowcore address 272-279, which
      makes it software accessible.
      
      This patch changes the program check handler and the stack overflow
      checker to copy the value into the pt_regs argument.
      The oops output is enhanced to show the last known breaking address.
      It might give additional information if the stack trace is corrupted.
      
      The feature is only available on 64 bit.
      
      The new oops output looks like:
      
      [---------snip----------]
      Modules linked in: vmcp sunrpc qeth_l2 dm_mod qeth ccwgroup
      CPU: 2 Not tainted 2.6.24zlive-host #8
      Process modprobe (pid: 4788, task: 00000000bf3d8718, ksp: 00000000b2b0b8e0)
      Krnl PSW : 0704200180000000 000003e000020028 (vmcp_init+0x28/0xe4 [vmcp])
                 R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
      Krnl GPRS: 0000000004000002 000003e000020000 0000000000000000 0000000000000001
                 000000000015734c ffffffffffffffff 000003e0000b3b00 0000000000000000
                 000003e00007ca30 00000000b5bb5d40 00000000b5bb5800 000003e0000b3b00
                 000003e0000a2000 00000000003ecf50 00000000b2b0bd50 00000000b2b0bcb0
      Krnl Code: 000003e000020018: c0c000040ff4       larl    %r12,3e0000a2000
                 000003e00002001e: e3e0f0000024       stg     %r14,0(%r15)
                 000003e000020024: a7f40001           brc     15,3e000020026
                >000003e000020028: e310c0100004       lg      %r1,16(%r12)
                 000003e00002002e: c020000413dc       larl    %r2,3e0000a27e6
                 000003e000020034: c0a00004aee6       larl    %r10,3e0000b5e00
                 000003e00002003a: a7490001           lghi    %r4,1
                 000003e00002003e: a75900f0           lghi    %r5,240
      Call Trace:
      ([<000000000014b300>] blocking_notifier_call_chain+0x2c/0x40)
       [<000000000015735c>] sys_init_module+0x19d8/0x1b08
       [<0000000000110afc>] sysc_noemu+0x10/0x16
       [<000002000011cda2>] 0x2000011cda2
      Last Breaking-Event-Address:
       [<000003e000020024>] vmcp_init+0x24/0xe4 [vmcp]
      [---------snip----------]
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      9e74a6b8
  12. 10 2月, 2008 2 次提交
  13. 09 2月, 2008 2 次提交
  14. 06 2月, 2008 1 次提交
  15. 26 1月, 2008 1 次提交
  16. 22 10月, 2007 2 次提交
  17. 10 7月, 2007 1 次提交
  18. 19 6月, 2007 1 次提交
  19. 27 4月, 2007 2 次提交
    • H
      [S390] Processor degradation notification. · 2fc2d1e9
      Heiko Carstens 提交于
      Generate uevents for all cpus if cpu capability changes. This can
      happen e.g. because the cpus are overheating. The cpu capability can
      be read via /sys/devices/system/cpu/cpuN/capability.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      2fc2d1e9
    • M
      [S390] Improved oops output. · bb11e3bd
      Martin Schwidefsky 提交于
      This patch adds two improvements to the oops output. First it adds an
      additional line after the PSW which decodes the different fields of it.
      Second a disassembler is added that decodes the instructions surrounding
      the faulting PSW. The output of a test oops now looks like this:
      
      kernel BUG at init/main.c:419
      illegal operation: 0001 [#1]
      CPU:    0    Not tainted
      Process swapper (pid: 0, task: 0000000000464968, ksp: 00000000004be000)
      Krnl PSW : 0700000180000000 00000000000120b6 (rest_init+0x36/0x38)
                 R:0 T:1 IO:1 EX:1 Key:0 M:0 W:0 P:0 AS:0 CC:0 PM:0 EA:3
      Krnl GPRS: 0000000000000003 00000000004ba017 0000000000000022 0000000000000001
                 000000000003a5f6 0000000000000000 00000000004be6a8 0000000000000000
                 0000000000000000 00000000004b8200 0000000000003a50 0000000000008000
                 0000000000516368 000000000033d008 00000000000120b2 00000000004bdee0
      Krnl Code: 00000000000120a6: e3e0f0980024       stg     %r14,152(%r15)
                 00000000000120ac: c0e500014296       brasl   %r14,3a5d8
                 00000000000120b2: a7f40001           brc     15,120b4
                >00000000000120b6: 0707               bcr     0,%r7
                 00000000000120b8: eb7ff0500024       stmg    %r7,%r15,80(%r15)
                 00000000000120be: c0d000195825       larl    %r13,33d108
                 00000000000120c4: a7f13f00           tmll    %r15,16128
                 00000000000120c8: a7840001           brc     8,120ca
      Call Trace:
      ([<00000000000120b2>] rest_init+0x32/0x38)
       [<00000000004be614>] start_kernel+0x37c/0x410
       [<0000000000012020>] _ehead+0x20/0x80
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      bb11e3bd
  20. 21 2月, 2007 1 次提交
  21. 06 2月, 2007 5 次提交
    • H
      [S390] Convert memory detection into C code. · ab14de6c
      Heiko Carstens 提交于
      Hopefully this will make it more maintainable and less error prone.
      Code makes use of search_exception_tables(). Since it calls this
      function before the kernel exeception table is sorted, there is an
      early call to sort_main_extable().
      
      This way it's easy to use the already present infrastructure of fixup
      sections. Also this would allows to easily convert the rest of
      head[31|64].S into C code.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      ab14de6c
    • M
      [S390] Calibrate delay and bogomips. · 31ee4b2f
      Martin Schwidefsky 提交于
      Preset the bogomips number to the cpu capacity value reported by
      store system information in SYSIB 1.2.2. This value is constant
      for a particular machine model and can be used to determine
      relative performance differences between machines.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      31ee4b2f
    • G
      [S390] noexec protection · c1821c2e
      Gerald Schaefer 提交于
      This provides a noexec protection on s390 hardware. Our hardware does
      not have any bits left in the pte for a hw noexec bit, so this is a
      different approach using shadow page tables and a special addressing
      mode that allows separate address spaces for code and data.
      
      As a special feature of our "secondary-space" addressing mode, separate
      page tables can be specified for the translation of data addresses
      (storage operands) and instruction addresses. The shadow page table is
      used for the instruction addresses and the standard page table for the
      data addresses.
      The shadow page table is linked to the standard page table by a pointer
      in page->lru.next of the struct page corresponding to the page that
      contains the standard page table (since page->private is not really
      private with the pte_lock and the page table pages are not in the LRU
      list).
      Depending on the software bits of a pte, it is either inserted into
      both page tables or just into the standard (data) page table. Pages of
      a vma that does not have the VM_EXEC bit set get mapped only in the
      data address space. Any try to execute code on such a page will cause a
      page translation exception. The standard reaction to this is a SIGSEGV
      with two exceptions: the two system call opcodes 0x0a77 (sys_sigreturn)
      and 0x0aad (sys_rt_sigreturn) are allowed. They are stored by the
      kernel to the signal stack frame. Unfortunately, the signal return
      mechanism cannot be modified to use an SA_RESTORER because the
      exception unwinding code depends on the system call opcode stored
      behind the signal stack frame.
      
      This feature requires that user space is executed in secondary-space
      mode and the kernel in home-space mode, which means that the addressing
      modes need to be switched and that the noexec protection only works
      for user space.
      After switching the addressing modes, we cannot use the mvcp/mvcs
      instructions anymore to copy between kernel and user space. A new
      mvcos instruction has been added to the z9 EC/BC hardware which allows
      to copy between arbitrary address spaces, but on older hardware the
      page tables need to be walked manually.
      Signed-off-by: NGerald Schaefer <geraldsc@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c1821c2e
    • H
      [S390] Add set_fs(USER_DS) to start_thread(). · 9b241cc8
      Heiko Carstens 提交于
      Currently works anyway since search_binary_handler has a
      set_fs(USER_DS). But start_thread() is the place where this should be
      done. Following all other architectures...
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      9b241cc8
    • H
      [S390] Small barrier() and cpu_relax() cleanup. · c48e0913
      Heiko Carstens 提交于
      cpu_relax() has barrier() semantics hence there is no need to use both
      of them in conjunction in sclp_sync_wait(). Also change cpu_relax()
      so it's more obvious that it has barrier semantics.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c48e0913
  22. 28 9月, 2006 1 次提交
    • M
      [S390] Inline assembly cleanup. · 94c12cc7
      Martin Schwidefsky 提交于
      Major cleanup of all s390 inline assemblies. They now have a common
      coding style. Quite a few have been shortened, mainly by using register
      asm variables. Use of the EX_TABLE macro helps  as well. The atomic ops,
      bit ops and locking inlines new use the Q-constraint if a newer gcc
      is used.  That results in slightly better code.
      
      Thanks to Christian Borntraeger for proof reading the changes.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      94c12cc7
  23. 26 9月, 2006 1 次提交
  24. 20 9月, 2006 1 次提交
  25. 12 7月, 2006 1 次提交
  26. 13 1月, 2006 2 次提交
  27. 28 7月, 2005 1 次提交
    • M
      [PATCH] s390: spin lock retry · 951f22d5
      Martin Schwidefsky 提交于
      Split spin lock and r/w lock implementation into a single try which is done
      inline and an out of line function that repeatedly tries to get the lock
      before doing the cpu_relax().  Add a system control to set the number of
      retries before a cpu is yielded.
      
      The reason for the spin lock retry is that the diagnose 0x44 that is used to
      give up the virtual cpu is quite expensive.  For spin locks that are held only
      for a short period of time the costs of the diagnoses outweights the savings
      for spin locks that are held for a longer timer.  The default retry count is
      1000.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      951f22d5
  28. 26 6月, 2005 1 次提交
  29. 01 5月, 2005 1 次提交
  30. 20 4月, 2005 1 次提交
    • H
      [PATCH] freepgt: remove MM_VM_SIZE(mm) · ee39b37b
      Hugh Dickins 提交于
      There's only one usage of MM_VM_SIZE(mm) left, and it's a troublesome macro
      because mm doesn't contain the (32-bit emulation?) info needed.  But it too is
      only needed because we ignore the end from the vma list.
      
      We could make flush_pgtables return that end, or unmap_vmas.  Choose the
      latter, since it's a natural fit with unmap_mapping_range_vma needing to know
      its restart addr.  This does make more than minimal change, but if unmap_vmas
      had returned the end before, this is how we'd have done it, rather than
      storing the break_addr in zap_details.
      
      unmap_vmas used to return count of vmas scanned, but that's just debug which
      hasn't been useful in a while; and if we want the map_count 0 on exit check
      back, it can easily come from the final remove_vm_struct loop.
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ee39b37b