diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-17 01:09:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-17 01:09:29 -0500 |
commit | 2bb4646fce8d09916b351d1a62f98db7cec6fc41 (patch) | |
tree | c1f0d002e69868606eca9d1b919835f422892063 /arch/powerpc/platforms | |
parent | 6836b9bdd98e3b500cd49512484df68f46e14659 (diff) | |
parent | b0483e78e5c4c9871fc5541875b3bc006846d46b (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'arch/powerpc/platforms')
-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 */ |