Commit 9d2bc1a4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc/pseries: Fix kexec regression caused by CPPR tracking
parents 8bd73803 36350e00
...@@ -784,9 +784,13 @@ static void xics_set_cpu_priority(unsigned char cppr) ...@@ -784,9 +784,13 @@ static void xics_set_cpu_priority(unsigned char cppr)
{ {
struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr);
BUG_ON(os_cppr->index != 0); /*
* we only really want to set the priority when there's
* just one cppr value on the stack
*/
WARN_ON(os_cppr->index != 0);
os_cppr->stack[os_cppr->index] = cppr; os_cppr->stack[0] = cppr;
if (firmware_has_feature(FW_FEATURE_LPAR)) if (firmware_has_feature(FW_FEATURE_LPAR))
lpar_cppr_info(cppr); lpar_cppr_info(cppr);
...@@ -821,8 +825,14 @@ void xics_setup_cpu(void) ...@@ -821,8 +825,14 @@ void xics_setup_cpu(void)
void xics_teardown_cpu(void) void xics_teardown_cpu(void)
{ {
struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr);
int cpu = smp_processor_id(); int cpu = smp_processor_id();
/*
* we have to reset the cppr index to 0 because we're
* not going to return from the IPI
*/
os_cppr->index = 0;
xics_set_cpu_priority(0); xics_set_cpu_priority(0);
/* Clear any pending IPI request */ /* Clear any pending IPI request */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment