diff options
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/kernel/irq.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/smp.c | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index 006385dbee66..f7ae2bcd49a5 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -291,12 +291,14 @@ void do_cpu_irq_mask(struct pt_regs *regs) | |||
291 | static struct irqaction timer_action = { | 291 | static struct irqaction timer_action = { |
292 | .handler = timer_interrupt, | 292 | .handler = timer_interrupt, |
293 | .name = "timer", | 293 | .name = "timer", |
294 | .flags = SA_INTERRUPT, | ||
294 | }; | 295 | }; |
295 | 296 | ||
296 | #ifdef CONFIG_SMP | 297 | #ifdef CONFIG_SMP |
297 | static struct irqaction ipi_action = { | 298 | static struct irqaction ipi_action = { |
298 | .handler = ipi_interrupt, | 299 | .handler = ipi_interrupt, |
299 | .name = "IPI", | 300 | .name = "IPI", |
301 | .flags = SA_INTERRUPT, | ||
300 | }; | 302 | }; |
301 | #endif | 303 | #endif |
302 | 304 | ||
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index a9ecf6465784..268b0f2a328e 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -338,6 +338,10 @@ smp_call_function (void (*func) (void *info), void *info, int retry, int wait) | |||
338 | 338 | ||
339 | /* Can deadlock when called with interrupts disabled */ | 339 | /* Can deadlock when called with interrupts disabled */ |
340 | WARN_ON(irqs_disabled()); | 340 | WARN_ON(irqs_disabled()); |
341 | |||
342 | /* can also deadlock if IPIs are disabled */ | ||
343 | WARN_ON((get_eiem() & (1UL<<(CPU_IRQ_MAX - IPI_IRQ))) == 0); | ||
344 | |||
341 | 345 | ||
342 | data.func = func; | 346 | data.func = func; |
343 | data.info = info; | 347 | data.info = info; |