1. 19 Jun, 2007 1 commit
  2. 27 Apr, 2007 2 commits
    • Heiko Carstens's avatar
      [S390] Processor degradation notification. · 2fc2d1e9
      Heiko Carstens authored
      
      
      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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      2fc2d1e9
    • Martin Schwidefsky's avatar
      [S390] Improved oops output. · bb11e3bd
      Martin Schwidefsky authored
      
      
      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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      bb11e3bd
  3. 21 Feb, 2007 1 commit
  4. 05 Feb, 2007 5 commits
    • Heiko Carstens's avatar
      [S390] Convert memory detection into C code. · ab14de6c
      Heiko Carstens authored
      
      
      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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      ab14de6c
    • Martin Schwidefsky's avatar
      [S390] Calibrate delay and bogomips. · 31ee4b2f
      Martin Schwidefsky authored
      
      
      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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      31ee4b2f
    • Gerald Schaefer's avatar
      [S390] noexec protection · c1821c2e
      Gerald Schaefer authored
      
      
      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: default avatarGerald Schaefer <geraldsc@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      c1821c2e
    • Heiko Carstens's avatar
      [S390] Add set_fs(USER_DS) to start_thread(). · 9b241cc8
      Heiko Carstens authored
      
      
      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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      9b241cc8
    • Heiko Carstens's avatar
      [S390] Small barrier() and cpu_relax() cleanup. · c48e0913
      Heiko Carstens authored
      
      
      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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      c48e0913
  5. 28 Sep, 2006 1 commit
    • Martin Schwidefsky's avatar
      [S390] Inline assembly cleanup. · 94c12cc7
      Martin Schwidefsky authored
      
      
      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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      94c12cc7
  6. 26 Sep, 2006 1 commit
  7. 20 Sep, 2006 1 commit
  8. 12 Jul, 2006 1 commit
  9. 12 Jan, 2006 2 commits
  10. 27 Jul, 2005 1 commit
    • Martin Schwidefsky's avatar
      [PATCH] s390: spin lock retry · 951f22d5
      Martin Schwidefsky authored
      
      
      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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      951f22d5
  11. 25 Jun, 2005 1 commit
  12. 01 May, 2005 1 commit
  13. 19 Apr, 2005 1 commit
    • Hugh Dickins's avatar
      [PATCH] freepgt: remove MM_VM_SIZE(mm) · ee39b37b
      Hugh Dickins authored
      
      
      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: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ee39b37b
  14. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4