diff options
author | Anton Blanchard <anton@samba.org> | 2012-01-09 14:29:15 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-01-11 11:54:20 +1100 |
commit | a5ccfee05a439b803640e94584056204501db31c (patch) | |
tree | 2545bab092fe62924d5ccba8920c137b1e771ba6 /arch/powerpc/kernel/ppc_save_regs.S | |
parent | 7b3480f8b701170c046e1ed362946f5f0d005e13 (diff) | |
download | blackbird-op-linux-a5ccfee05a439b803640e94584056204501db31c.tar.gz blackbird-op-linux-a5ccfee05a439b803640e94584056204501db31c.zip |
powerpc: Fix RCU idle and hcall tracing
Tracepoints should not be called inside an rcu_idle_enter/rcu_idle_exit
region. Since pSeries calls H_CEDE in the idle loop, we were violating
this rule.
commit a7b152d5342c (powerpc: Tell RCU about idle after hcall tracing)
tried to work around it by delaying the rcu_idle_enter until after we
called the hcall tracepoint, but there are a number of issues with it.
The hcall tracepoint trampoline code is called conditionally when the
tracepoint is enabled. If the tracepoint is not enabled we never call
rcu_idle_enter. The idle_uses_rcu check was also done at compile time
which breaks multiplatform builds.
The simple fix is to avoid tracing H_CEDE and rely on other tracepoints
and the hypervisor dispatch trace log to work out if we called H_CEDE.
This fixes a hang during boot on pSeries.
Signed-off-by: Anton Blanchard <anton@samba.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/ppc_save_regs.S')
0 files changed, 0 insertions, 0 deletions