1. 29 3月, 2012 1 次提交
  2. 11 3月, 2012 1 次提交
    • M
      [S390] kernel: Add z/VM LGR detection · 3ab121ab
      Michael Holzheu 提交于
      Currently the following mechanisms are available to move active
      Linux on System z instances between machines:
      * z/VM 6.2 SSI (Single System Image)
      * Suspend/resume
      For moving Linux instances in this patch the term LGR (Linux Guest
      Relocation) is used. Because such an operation is critical, it
      should be detectable from Linux. With this patch for both, a live
      system and a kernel dump, the information about LGRs is accessible.
      To identify a guest, stsi and stfle data is used. A new function
      lgr_info_log() compares the current data (lgr_info_cur) with the
      last recorded one (lgr_info_last). In case the two data sets differ,
      lgr_info_cur is logged to the "lgr" s390dbf.
      
      The following trigger points call lgr_info_log():
      * panic
      * die
      * kdump
      * LGR timer
      * PSW restart
      * QDIO recovery
      * resume
      
      This patch also changes the s390dbf hex_ascii view. Now only printable ASCII
      characters are shown.
      Reviewed-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      3ab121ab
  3. 27 12月, 2011 1 次提交
  4. 30 10月, 2011 3 次提交
  5. 03 8月, 2011 1 次提交
  6. 23 3月, 2011 1 次提交
  7. 12 1月, 2011 1 次提交
  8. 05 1月, 2011 2 次提交
  9. 25 10月, 2010 3 次提交
  10. 19 10月, 2010 1 次提交
  11. 07 10月, 2010 1 次提交
    • D
      Fix IRQ flag handling naming · df9ee292
      David Howells 提交于
      Fix the IRQ flag handling naming.  In linux/irqflags.h under one configuration,
      it maps:
      
      	local_irq_enable() -> raw_local_irq_enable()
      	local_irq_disable() -> raw_local_irq_disable()
      	local_irq_save() -> raw_local_irq_save()
      	...
      
      and under the other configuration, it maps:
      
      	raw_local_irq_enable() -> local_irq_enable()
      	raw_local_irq_disable() -> local_irq_disable()
      	raw_local_irq_save() -> local_irq_save()
      	...
      
      This is quite confusing.  There should be one set of names expected of the
      arch, and this should be wrapped to give another set of names that are expected
      by users of this facility.
      
      Change this to have the arch provide:
      
      	flags = arch_local_save_flags()
      	flags = arch_local_irq_save()
      	arch_local_irq_restore(flags)
      	arch_local_irq_disable()
      	arch_local_irq_enable()
      	arch_irqs_disabled_flags(flags)
      	arch_irqs_disabled()
      	arch_safe_halt()
      
      Then linux/irqflags.h wraps these to provide:
      
      	raw_local_save_flags(flags)
      	raw_local_irq_save(flags)
      	raw_local_irq_restore(flags)
      	raw_local_irq_disable()
      	raw_local_irq_enable()
      	raw_irqs_disabled_flags(flags)
      	raw_irqs_disabled()
      	raw_safe_halt()
      
      with type checking on the flags 'arguments', and then wraps those to provide:
      
      	local_save_flags(flags)
      	local_irq_save(flags)
      	local_irq_restore(flags)
      	local_irq_disable()
      	local_irq_enable()
      	irqs_disabled_flags(flags)
      	irqs_disabled()
      	safe_halt()
      
      with tracing included if enabled.
      
      The arch functions can now all be inline functions rather than some of them
      having to be macros.
      
      Signed-off-by: David Howells <dhowells@redhat.com> [X86, FRV, MN10300]
      Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> [Tile]
      Signed-off-by: Michal Simek <monstr@monstr.eu> [Microblaze]
      Tested-by: Catalin Marinas <catalin.marinas@arm.com> [ARM]
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> [AVR]
      Acked-by: Tony Luck <tony.luck@intel.com> [IA-64]
      Acked-by: Hirokazu Takata <takata@linux-m32r.org> [M32R]
      Acked-by: Greg Ungerer <gerg@uclinux.org> [M68K/M68KNOMMU]
      Acked-by: Ralf Baechle <ralf@linux-mips.org> [MIPS]
      Acked-by: Kyle McMartin <kyle@mcmartin.ca> [PA-RISC]
      Acked-by: Paul Mackerras <paulus@samba.org> [PowerPC]
      Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com> [S390]
      Acked-by: Chen Liqin <liqin.chen@sunplusct.com> [Score]
      Acked-by: Matt Fleming <matt@console-pimps.org> [SH]
      Acked-by: David S. Miller <davem@davemloft.net> [Sparc]
      Acked-by: Chris Zankel <chris@zankel.net> [Xtensa]
      Reviewed-by: Richard Henderson <rth@twiddle.net> [Alpha]
      Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp> [H8300]
      Cc: starvik@axis.com [CRIS]
      Cc: jesper.nilsson@axis.com [CRIS]
      Cc: linux-cris-kernel@axis.com
      df9ee292
  12. 17 5月, 2010 1 次提交
    • M
      [S390] improve irq tracing code in entry[64].S · 6a2df3a8
      Martin Schwidefsky 提交于
      The system call path in entry[64].S is run with interrupts enabled.
      Remove the irq tracing check from the system call exit code. If a
      program check interrupted a context enabled for interrupts do a
      call to trace_irq_off_caller in the program check handler before
      branching to the system call exit code.
      Restructure the system call and io interrupt return code to avoid
      avoid the lpsw[e] to disable machine checks.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      6a2df3a8
  13. 24 3月, 2010 2 次提交
  14. 27 2月, 2010 1 次提交
  15. 11 9月, 2009 1 次提交
  16. 16 6月, 2009 1 次提交
  17. 26 3月, 2009 2 次提交
  18. 31 12月, 2008 1 次提交
    • M
      [PATCH] improve precision of process accounting. · aa5e97ce
      Martin Schwidefsky 提交于
      The unit of the cputime accouting values that are stored per process is
      currently a microsecond. The CPU timer has a maximum granularity of
      2**-12 microseconds. There is no benefit in storing the per process values
      in the lesser precision and there is the disadvantage that the backend
      has to do the rounding to microseconds. The better solution is to use
      the maximum granularity of the CPU timer as cputime unit.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      aa5e97ce
  19. 25 12月, 2008 2 次提交
  20. 02 8月, 2008 1 次提交
  21. 10 6月, 2008 1 次提交
  22. 07 5月, 2008 1 次提交
  23. 30 4月, 2008 2 次提交
  24. 17 4月, 2008 1 次提交
  25. 08 2月, 2008 1 次提交
  26. 20 11月, 2007 1 次提交
    • H
      [S390] Fix irq tracing and lockdep_sys_exit calls. · 411788ea
      Heiko Carstens 提交于
      Current support for TRACE_IRQFLAGS and lockdep_sys_exit is broken.
      IRQ flag tracing is broken for program checks. Even worse is that
      the newly introduced calls to lockdep_sys_exit are in the critical
      section code which is not supposed to call any C functions. In
      addition the checks if locks are still held are also done when
      returning to kernel code which is broken as well.
      Fix all this by disabling interrupts and machine checks at the
      exit paths and then do the appropriate checks and calls.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      411788ea
  27. 12 10月, 2007 1 次提交
  28. 20 7月, 2007 1 次提交
  29. 06 2月, 2007 1 次提交
    • 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
  30. 04 12月, 2006 1 次提交
  31. 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