diff options
author | Mike Miller <mike.miller@hp.com> | 2010-06-02 12:58:02 -0700 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 18:12:35 +0200 |
commit | 2cf3af1c9ec26f8db3f386e48f9d979ad8bb3eff (patch) | |
tree | f5a315a693777164760fd25c1c8702017efc3e03 | |
parent | 0c2b39087c900bdb240b50ac95ee9da00d844565 (diff) | |
download | op-kernel-dev-2cf3af1c9ec26f8db3f386e48f9d979ad8bb3eff.zip op-kernel-dev-2cf3af1c9ec26f8db3f386e48f9d979ad8bb3eff.tar.gz |
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>
-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 cae6a138..cd830cb 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, |