cciss: check for msi in interrupt_not_for_us
authorMike Miller <mike.miller@hp.com>
Wed, 2 Jun 2010 19:58:02 +0000 (12:58 -0700)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 7 Aug 2010 16:12:35 +0000 (18:12 +0200)
Check to see if h->msi[x]_vector is set.  We need this for a following
patch.  Without this check we process one interrupt then stop because in
msi[x] mode the interrupt pending bit is not set.  Not sure why we didn't
encounter this before.

Signed-off-by: Mike Miller <mike.miller@hp.com>
Cc: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
drivers/block/cciss.c

index cae6a138328236d1221f1bedefcaf66fab673ca7..cd830cb64a5d4c2c645b76469d7885adcd1f6100 100644 (file)
@@ -3333,8 +3333,9 @@ static inline int interrupt_pending(ctlr_info_t *h)
 
 static inline long interrupt_not_for_us(ctlr_info_t *h)
 {
-       return (((h->access.intr_pending(h) == 0) ||
-               (h->interrupts_enabled == 0)));
+       return !(h->msi_vector || h->msix_vector) &&
+               ((h->access.intr_pending(h) == 0) ||
+               (h->interrupts_enabled == 0));
 }
 
 static inline int bad_tag(ctlr_info_t *h, u32 tag_index,