diff options
Diffstat (limited to 'arch/sparc64')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 6b6165d36fd8..634194e7d2d6 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -309,6 +309,10 @@ static void sun4u_irq_disable(unsigned int virt_irq) | |||
309 | static void sun4u_irq_end(unsigned int virt_irq) | 309 | static void sun4u_irq_end(unsigned int virt_irq) |
310 | { | 310 | { |
311 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | 311 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
312 | struct irq_desc *desc = irq_desc + virt_irq; | ||
313 | |||
314 | if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
315 | return; | ||
312 | 316 | ||
313 | if (likely(data)) | 317 | if (likely(data)) |
314 | upa_writeq(ICLR_IDLE, data->iclr); | 318 | upa_writeq(ICLR_IDLE, data->iclr); |
@@ -373,6 +377,10 @@ static void sun4v_irq_end(unsigned int virt_irq) | |||
373 | { | 377 | { |
374 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 378 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
375 | unsigned int ino = bucket - &ivector_table[0]; | 379 | unsigned int ino = bucket - &ivector_table[0]; |
380 | struct irq_desc *desc = irq_desc + virt_irq; | ||
381 | |||
382 | if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
383 | return; | ||
376 | 384 | ||
377 | if (likely(bucket)) { | 385 | if (likely(bucket)) { |
378 | int err; | 386 | int err; |
@@ -443,6 +451,10 @@ static void sun4v_virq_end(unsigned int virt_irq) | |||
443 | { | 451 | { |
444 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 452 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
445 | unsigned int ino = bucket - &ivector_table[0]; | 453 | unsigned int ino = bucket - &ivector_table[0]; |
454 | struct irq_desc *desc = irq_desc + virt_irq; | ||
455 | |||
456 | if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
457 | return; | ||
446 | 458 | ||
447 | if (likely(bucket)) { | 459 | if (likely(bucket)) { |
448 | unsigned long dev_handle, dev_ino; | 460 | unsigned long dev_handle, dev_ino; |