diff options
Diffstat (limited to 'arch/ia64/sn/kernel/irq.c')
-rw-r--r-- | arch/ia64/sn/kernel/irq.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 360047389449..0f9b12683bf3 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/sn/pcidev.h> | 19 | #include <asm/sn/pcidev.h> |
20 | #include <asm/sn/shub_mmr.h> | 20 | #include <asm/sn/shub_mmr.h> |
21 | #include <asm/sn/sn_sal.h> | 21 | #include <asm/sn/sn_sal.h> |
22 | #include <asm/sn/sn_feature_sets.h> | ||
22 | 23 | ||
23 | static void force_interrupt(int irq); | 24 | static void force_interrupt(int irq); |
24 | static void register_intr_pda(struct sn_irq_info *sn_irq_info); | 25 | static void register_intr_pda(struct sn_irq_info *sn_irq_info); |
@@ -233,6 +234,20 @@ static void sn_set_affinity_irq(unsigned int irq, cpumask_t mask) | |||
233 | (void)sn_retarget_vector(sn_irq_info, nasid, slice); | 234 | (void)sn_retarget_vector(sn_irq_info, nasid, slice); |
234 | } | 235 | } |
235 | 236 | ||
237 | #ifdef CONFIG_SMP | ||
238 | void sn_set_err_irq_affinity(unsigned int irq) | ||
239 | { | ||
240 | /* | ||
241 | * On systems which support CPU disabling (SHub2), all error interrupts | ||
242 | * are targetted at the boot CPU. | ||
243 | */ | ||
244 | if (is_shub2() && sn_prom_feature_available(PRF_CPU_DISABLE_SUPPORT)) | ||
245 | set_irq_affinity_info(irq, cpu_physical_id(0), 0); | ||
246 | } | ||
247 | #else | ||
248 | void sn_set_err_irq_affinity(unsigned int irq) { } | ||
249 | #endif | ||
250 | |||
236 | static void | 251 | static void |
237 | sn_mask_irq(unsigned int irq) | 252 | sn_mask_irq(unsigned int irq) |
238 | { | 253 | { |