From: Mike Miller Date: Wed, 2 Jun 2010 19:58:02 +0000 (-0700) Subject: cciss: check for msi in interrupt_not_for_us X-Git-Tag: v2.6.36-rc1~288^2~146 X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=2cf3af1c9ec26f8db3f386e48f9d979ad8bb3eff;p=~andy%2Flinux cciss: check for msi in interrupt_not_for_us 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 Cc: Stephen M. Cameron Signed-off-by: Andrew Morton Signed-off-by: Jens Axboe --- diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index cae6a138328..cd830cb64a5 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -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,