diff options
author | Tej Parkash <tej.parkash@qlogic.com> | 2013-12-16 06:49:42 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2014-03-15 13:19:14 -0400 |
commit | 1b3d399cf6877c8d9abd63a2aff41b709a38fbd1 (patch) | |
tree | 4d416011a579d19e5103dbcd7d465d4ecb4ea10c /drivers/scsi/qla4xxx/ql4_mbx.c | |
parent | 831805a150e936defc9b54fa069a3cdd9529eedb (diff) |
[SCSI] qla4xxx: Fix processing response queue during probe
Issue:
While booting with kdump kernel, driver receive IOCB interrupts
for which it is not ready which results in processing them
before init_firmware during driver probe
Fix:
Two steps solution
1. Make driver ready to process the interrupt before interupts
handlers is registered.
2. Stop driver processing iocb interrupts if not generated as per
firmware protocol i.e R2H bit set
Signed-off-by: Tej Parkash <tej.parkash@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_mbx.c')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_mbx.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c index 6905bad3e15c..52c0a48ab41f 100644 --- a/drivers/scsi/qla4xxx/ql4_mbx.c +++ b/drivers/scsi/qla4xxx/ql4_mbx.c | |||
@@ -648,9 +648,6 @@ int qla4xxx_initialize_fw_cb(struct scsi_qla_host * ha) | |||
648 | goto exit_init_fw_cb; | 648 | goto exit_init_fw_cb; |
649 | } | 649 | } |
650 | 650 | ||
651 | /* Initialize request and response queues. */ | ||
652 | qla4xxx_init_rings(ha); | ||
653 | |||
654 | /* Fill in the request and response queue information. */ | 651 | /* Fill in the request and response queue information. */ |
655 | init_fw_cb->rqq_consumer_idx = cpu_to_le16(ha->request_out); | 652 | init_fw_cb->rqq_consumer_idx = cpu_to_le16(ha->request_out); |
656 | init_fw_cb->compq_producer_idx = cpu_to_le16(ha->response_in); | 653 | init_fw_cb->compq_producer_idx = cpu_to_le16(ha->response_in); |