diff options
author | Mark Nelson <markn@au1.ibm.com> | 2010-02-07 19:45:12 +0300 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-08 07:29:19 +0300 |
commit | 36350e00696df148507246c817cf6f86329479fd (patch) | |
tree | 2a57c7ae1583006658eea1c35232caf5b7cef7ee /arch/x86/include/asm | |
parent | 1a45dcfe2525e9432cb4aba461d4994fc2befe42 (diff) | |
download | linux-36350e00696df148507246c817cf6f86329479fd.tar.xz |
powerpc/pseries: Fix kexec regression caused by CPPR tracking
The code to track the CPPR values added by commit
49bd3647134ea47420067aea8d1401e722bf2aac ("powerpc/pseries: Track previous
CPPR values to correctly EOI interrupts") broke kexec on pseries because
the kexec code in xics.c calls xics_set_cpu_priority() before the IPI has
been EOI'ed. This wasn't a problem previously but it now triggers a BUG_ON
in xics_set_cpu_priority() because os_cppr->index isn't 0.
Fix this problem by setting the index on the CPPR stack to 0 before calling
xics_set_cpu_priority() in xics_teardown_cpu().
Also make it clear that we only want to set the priority when there's just
one CPPR value in the stack, and enforce it by updating the value of
os_cppr->stack[0] rather than os_cppr->stack[os_cppr->index].
While we're at it change the BUG_ON to a WARN_ON.
Reported-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Mark Nelson <markn@au1.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/x86/include/asm')
0 files changed, 0 insertions, 0 deletions