diff options
author | Mike Miller <mike.miller@hp.com> | 2010-06-02 15:58:02 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 12:12:35 -0400 |
commit | 2cf3af1c9ec26f8db3f386e48f9d979ad8bb3eff (patch) | |
tree | f5a315a693777164760fd25c1c8702017efc3e03 /drivers/block | |
parent | 0c2b39087c900bdb240b50ac95ee9da00d844565 (diff) |
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 <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>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/cciss.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index cae6a1383282..cd830cb64a5d 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -3333,8 +3333,9 @@ static inline int interrupt_pending(ctlr_info_t *h) | |||
3333 | 3333 | ||
3334 | static inline long interrupt_not_for_us(ctlr_info_t *h) | 3334 | static inline long interrupt_not_for_us(ctlr_info_t *h) |
3335 | { | 3335 | { |
3336 | return (((h->access.intr_pending(h) == 0) || | 3336 | return !(h->msi_vector || h->msix_vector) && |
3337 | (h->interrupts_enabled == 0))); | 3337 | ((h->access.intr_pending(h) == 0) || |
3338 | (h->interrupts_enabled == 0)); | ||
3338 | } | 3339 | } |
3339 | 3340 | ||
3340 | static inline int bad_tag(ctlr_info_t *h, u32 tag_index, | 3341 | static inline int bad_tag(ctlr_info_t *h, u32 tag_index, |