summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/block/cciss.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 35a9f08c..fdf1b79 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3376,8 +3376,7 @@ static inline int interrupt_pending(ctlr_info_t *h)
static inline long interrupt_not_for_us(ctlr_info_t *h)
{
- return !(h->msi_vector || h->msix_vector) &&
- ((h->access.intr_pending(h) == 0) ||
+ return ((h->access.intr_pending(h) == 0) ||
(h->interrupts_enabled == 0));
}
@@ -3470,10 +3469,6 @@ static irqreturn_t do_cciss_intx(int irq, void *dev_id)
if (interrupt_not_for_us(h))
return IRQ_NONE;
- /*
- * If there are completed commands in the completion queue,
- * we had better do something about it.
- */
spin_lock_irqsave(&h->lock, flags);
while (interrupt_pending(h)) {
raw_tag = get_next_completion(h);
@@ -3484,7 +3479,6 @@ static irqreturn_t do_cciss_intx(int irq, void *dev_id)
raw_tag = process_nonindexed_cmd(h, raw_tag);
}
}
-
spin_unlock_irqrestore(&h->lock, flags);
return IRQ_HANDLED;
}
@@ -3498,12 +3492,6 @@ static irqreturn_t do_cciss_msix_intr(int irq, void *dev_id)
unsigned long flags;
u32 raw_tag;
- if (interrupt_not_for_us(h))
- return IRQ_NONE;
- /*
- * If there are completed commands in the completion queue,
- * we had better do something about it.
- */
spin_lock_irqsave(&h->lock, flags);
raw_tag = get_next_completion(h);
while (raw_tag != FIFO_EMPTY) {
@@ -3512,7 +3500,6 @@ static irqreturn_t do_cciss_msix_intr(int irq, void *dev_id)
else
raw_tag = process_nonindexed_cmd(h, raw_tag);
}
-
spin_unlock_irqrestore(&h->lock, flags);
return IRQ_HANDLED;
}