diff options
author | Tony Lindgren <tony@atomide.com> | 2010-02-17 14:08:58 -0800 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-02-17 14:08:58 -0800 |
commit | 80c20d543d142ee54ec85259b77aaf0b83c32db5 (patch) | |
tree | 364017b2c001939bbb645dcc20d565c1f71b13a8 /arch/powerpc/platforms/pseries/xics.c | |
parent | d6a2d9b800276140abf352908abbd0c240890692 (diff) | |
parent | b72c7d543589736d43da531566490dd31572f5ca (diff) |
Merge branch 'omap-fixes-for-linus' into omap-for-linus
Diffstat (limited to 'arch/powerpc/platforms/pseries/xics.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/xics.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index 1ee66db003b..f5f79196721 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c @@ -784,9 +784,13 @@ static void xics_set_cpu_priority(unsigned char 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)) lpar_cppr_info(cppr); @@ -821,8 +825,14 @@ void xics_setup_cpu(void) void xics_teardown_cpu(void) { + struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); 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); /* Clear any pending IPI request */ |