diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/xics.c')
| -rw-r--r-- | arch/powerpc/platforms/pseries/xics.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index d80f193cd871..f5f79196721c 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
| @@ -191,11 +191,7 @@ static int get_irq_server(unsigned int virq, cpumask_t cpumask, | |||
| 191 | return default_server; | 191 | return default_server; |
| 192 | } | 192 | } |
| 193 | #else | 193 | #else |
| 194 | static int get_irq_server(unsigned int virq, cpumask_t cpumask, | 194 | #define get_irq_server(virq, cpumask, strict_check) (default_server) |
| 195 | unsigned int strict_check) | ||
| 196 | { | ||
| 197 | return default_server; | ||
| 198 | } | ||
| 199 | #endif | 195 | #endif |
| 200 | 196 | ||
| 201 | static void xics_unmask_irq(unsigned int virq) | 197 | static void xics_unmask_irq(unsigned int virq) |
| @@ -788,9 +784,13 @@ static void xics_set_cpu_priority(unsigned char cppr) | |||
| 788 | { | 784 | { |
| 789 | struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); | 785 | struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); |
| 790 | 786 | ||
| 791 | BUG_ON(os_cppr->index != 0); | 787 | /* |
| 788 | * we only really want to set the priority when there's | ||
| 789 | * just one cppr value on the stack | ||
| 790 | */ | ||
| 791 | WARN_ON(os_cppr->index != 0); | ||
| 792 | 792 | ||
| 793 | os_cppr->stack[os_cppr->index] = cppr; | 793 | os_cppr->stack[0] = cppr; |
| 794 | 794 | ||
| 795 | if (firmware_has_feature(FW_FEATURE_LPAR)) | 795 | if (firmware_has_feature(FW_FEATURE_LPAR)) |
| 796 | lpar_cppr_info(cppr); | 796 | lpar_cppr_info(cppr); |
| @@ -825,8 +825,14 @@ void xics_setup_cpu(void) | |||
| 825 | 825 | ||
| 826 | void xics_teardown_cpu(void) | 826 | void xics_teardown_cpu(void) |
| 827 | { | 827 | { |
| 828 | struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); | ||
| 828 | int cpu = smp_processor_id(); | 829 | int cpu = smp_processor_id(); |
| 829 | 830 | ||
| 831 | /* | ||
| 832 | * we have to reset the cppr index to 0 because we're | ||
| 833 | * not going to return from the IPI | ||
| 834 | */ | ||
| 835 | os_cppr->index = 0; | ||
| 830 | xics_set_cpu_priority(0); | 836 | xics_set_cpu_priority(0); |
| 831 | 837 | ||
| 832 | /* Clear any pending IPI request */ | 838 | /* Clear any pending IPI request */ |
