aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64')
-rw-r--r--arch/sparc64/kernel/irq.c12
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)
309static void sun4u_irq_end(unsigned int virt_irq) 309static 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;