1. 09 4月, 2010 1 次提交
    • M
      [S390] fix io_return critical section cleanup · 176b1803
      Martin Schwidefsky 提交于
      If a machine check interrupts the io interrupt handler on one of the
      instructions between io_return and io_leave the critical section
      cleanup code will move the return psw to io_work_loop. By doing that
      the switch from the asynchronous interrupt stack to the process stack
      is skipped. If e.g. TIF_NEED_RESCHED is set things break because
      the scheduler is called with the asynchronous interrupts stack.
      Moving the psw back to io_return instead fixes the problem.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      176b1803
  2. 27 2月, 2010 1 次提交
  3. 27 1月, 2010 1 次提交
  4. 13 11月, 2009 1 次提交
    • C
      [S390] s390: fix single stepping on svc0 · bcc6525f
      Christian Borntraeger 提交于
      On s390 there are two ways of specifying the system call number for
      the svc instruction. The standard way is to use the immediate field
      in the instruction (or to use EXecute for values unknown during
      assemble time). This can encode 256 system calls.
      The kernel ABI also allows to put the system call number in r1 and
      then execute svc 0 to enable system call numbers > 255.
      
      It turns out that single stepping svc 0 is broken, since the PER
      program check handler uses r1. We have to use a different register.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      bcc6525f
  5. 11 9月, 2009 1 次提交
  6. 26 8月, 2009 1 次提交
    • J
      tracing: Rename FTRACE_SYSCALLS for tracepoints · 66700001
      Josh Stone 提交于
      s/HAVE_FTRACE_SYSCALLS/HAVE_SYSCALL_TRACEPOINTS/g
      s/TIF_SYSCALL_FTRACE/TIF_SYSCALL_TRACEPOINT/g
      
      The syscall enter/exit tracing is no longer specific to just ftrace, so
      they now have names that reflect their tie to tracepoints instead.
      Signed-off-by: NJosh Stone <jistone@redhat.com>
      Cc: Jason Baron <jbaron@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Jiaying Zhang <jiayingz@google.com>
      Cc: Martin Bligh <mbligh@google.com>
      Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      LKML-Reference: <1251150194-1713-2-git-send-email-jistone@redhat.com>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      66700001
  7. 12 6月, 2009 2 次提交
  8. 14 4月, 2009 1 次提交
  9. 31 12月, 2008 2 次提交
  10. 25 12月, 2008 2 次提交
    • M
      [S390] Remove config options. · c185b783
      Martin Schwidefsky 提交于
      On s390 we always want to run with precise cputime accounting.
      Remove the config options VIRT_TIMER and VIRT_CPU_ACCOUNTING.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c185b783
    • A
      [S390] audit: get s390 ret_from_fork in sync with other architectures · 8f2961c3
      Al Viro 提交于
      	On s390 we have ret_from_fork jump not to the "do all work we
      normally do on return from syscall" as on x86, ppc, etc., but to the
      "do all such work except audit".  Historical reasons - the codepath
      triggered when we have AUDIT process flag set is separated from the
      normall one and they converge at sysc_return, which is the common
      part of post-syscall work.  And does not include calling audit_syscall_exit() -
      that's done in the end of sysc_tracesys path, just before that path jumps
      to sysc_return.
      
      	IOW, the child returning from fork()/clone()/vfork() doesn't
      call audit_syscall_exit() at all, so no matter what we do with its
      audit context, we are not going to see the audit entry.
      
      	The fix is simple: have ret_from_fork go to the point just past
      the call of sys_.... in the 'we have AUDIT flag set' path.  There we
      have (64bit variant; for 31bit the situation is the same):
      sysc_tracenogo:
              tm      __TI_flags+7(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)
              jz      sysc_return
              la      %r2,SP_PTREGS(%r15)     # load pt_regs
              larl    %r14,sysc_return        # return point is sysc_return
              jg      do_syscall_trace_exit
      which is precisely what we need - check the flag, bugger off to sysc_return
      if not set, otherwise call do_syscall_trace_exit() and bugger off to
      sysc_return.  r9 has just been properly set by ret_from_fork itself,
      so we are fine.
      
      	Tested on s390x, seems to work fine.  WARNING: it's been about
      16 years since my last contact with 3X0 assembler[1], so additional
      review would be very welcome.  I don't think I've managed to screw it
      up, but...
      
      [1] that *was* in another country and besides, the box is dead...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      8f2961c3
  11. 27 11月, 2008 1 次提交
    • M
      [S390] fix system call parameter functions. · 59da2139
      Martin Schwidefsky 提交于
      syscall_get_nr() currently returns a valid result only if the call
      chain of the traced process includes do_syscall_trace_enter(). But
      collect_syscall() can be called for any sleeping task, the result of
      syscall_get_nr() in general is completely bogus.
      
      To make syscall_get_nr() work for any sleeping task the traps field
      in pt_regs is replace with svcnr - the system call number the process
      is executing. If svcnr == 0 the process is not on a system call path.
      
      The syscall_get_arguments and syscall_set_arguments use regs->gprs[2]
      for the first system call parameter. This is incorrect since gprs[2]
      may have been overwritten with the system call number if the call
      chain includes do_syscall_trace_enter. Use regs->orig_gprs2 instead.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      59da2139
  12. 15 11月, 2008 1 次提交
  13. 11 10月, 2008 1 次提交
  14. 07 5月, 2008 2 次提交
    • C
      [S390] s390-kvm: leave sie context on work. Removes preemption requirement · 0eaeafa1
      Christian Borntraeger 提交于
      From: Martin Schwidefsky <schwidefsky@de.ibm.com>
      
      This patch fixes a bug with cpu bound guest on kvm-s390. Sometimes it
      was impossible to deliver a signal to a spinning guest. We used
      preemption as a circumvention. The preemption notifiers called
      vcpu_load, which checked for pending signals and triggered a host
      intercept. But even with preemption, a sigkill was not delivered
      immediately.
      
      This patch changes the low level host interrupt handler to check for the
      SIE  instruction, if TIF_WORK is set. In that case we change the
      instruction pointer of the return PSW to rerun the vcpu_run loop. The kvm
      code sees an intercept reason 0 if that happens. This patch adds accounting
      for these types of intercept as well.
      
      The advantages:
      - works with and without preemption
      - signals are delivered immediately
      - much better host latencies without preemption
      Acked-by: NCarsten Otte <cotte@de.ibm.com>
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      0eaeafa1
    • M
      [S390] s390: Optimize user and work TIF check · 2688905e
      Martin Schwidefsky 提交于
      On return from syscall or interrupt, we have to check if we return to
      userspace (likely) and if there is work todo (less likely) to decide
      if we handle the work. We can optimize this check: we first check for
      the less likely work case and then check for userspace.
      
      This patch is also a preparation for an additional patch, that fixes a bug
      in KVM dealing with cpu bound guests.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      2688905e
  15. 30 4月, 2008 1 次提交
  16. 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
  17. 05 2月, 2008 1 次提交
  18. 20 11月, 2007 2 次提交
  19. 12 10月, 2007 1 次提交
  20. 27 7月, 2007 1 次提交
    • H
      [S390] Fix IRQ tracing. · b771aeac
      Heiko Carstens 提交于
      If a machine check is pending and the external or I/O interrupt handler
      returns to userspace io_mcck_pending is going to call s390_handle_mcck.
      Before this happens a call to TRACE_IRQS_ON was already made since we
      know that we are going back to userspace and hence interrupts will be
      enabled. So there was an indication that interrupts are enabled while
      in reality they are still disabled.
      s390_handle_mcck will do a local_irq_save/restore pair and confuse
      lockdep which later complains about inconsistent irq tracing.
      To solve this just call trace_hardirqs_off before calling
      s390_handle_mcck and trace_hardirqs_on afterwards.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      b771aeac
  21. 10 7月, 2007 1 次提交
  22. 19 6月, 2007 1 次提交
  23. 27 4月, 2007 1 次提交
  24. 28 9月, 2006 1 次提交
  25. 20 9月, 2006 2 次提交
  26. 04 7月, 2006 1 次提交
  27. 02 7月, 2006 1 次提交
  28. 01 7月, 2006 1 次提交
  29. 29 6月, 2006 2 次提交
    • M
      [S390] remove export of sys_call_table · 8f27766a
      Martin Schwidefsky 提交于
      Remove export of the sys_call_table symbol to prevent the misuse of it.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      8f27766a
    • M
      [S390] virtual cpu accounting vs. machine checks. · 63b12246
      Martin Schwidefsky 提交于
      If a machine checks interrupts the external or the i/o interrupt
      handler before they have completed the cpu time calculations, the
      accounting goes wrong. After the cpu returned from the machine check
      handler to the interrupted interrupt handler, a negative cpu time delta
      can occur.  If the accumulated cpu time in lowcore is small enough
      this value can get negative as well. The next jiffy interrupt will pick
      up that negative value, shift it by 12 and add the now huge positive
      value to the cpu time of the process.
      To solve this the machine check handler is modified not to change any
      of the timestamps in the lowcore if the machine check interrupted kernel
      context.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      63b12246
  30. 02 2月, 2006 1 次提交
  31. 07 1月, 2006 1 次提交
  32. 07 11月, 2005 1 次提交
  33. 18 9月, 2005 1 次提交