summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ibmvscsi
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2011-04-27 10:27:08 -0500
committerJames Bottomley <James.Bottomley@suse.de>2011-05-01 12:09:58 -0500
commit201aed678482f247aa96bd8fcd9e960fefd82d59 (patch)
tree206d28c41b43265a5abaf651b04fa503765b9101 /drivers/scsi/ibmvscsi
parent4d4dd7065572225bf6d97e5eb9915d94f9d53548 (diff)
downloadlinux-201aed678482f247aa96bd8fcd9e960fefd82d59.tar.gz
linux-201aed678482f247aa96bd8fcd9e960fefd82d59.tar.bz2
linux-201aed678482f247aa96bd8fcd9e960fefd82d59.zip
[SCSI] ibmvscsi: Improve CRQ reset reliability
This patch fixes an issue seen where an event occurs which causes the ibmvscsi driver to reset its CRQ. Upon re-registering its CRQ, it receives H_CLOSED, indicating the Virtual I/O Server is not yet ready to receive commands. This resulted in the ibmvscsi driver essentially offlining the adapter and not recovering. The fix is to re-enable our interrupt so that when the Virtual I/O server is ready and sends a CRQ init, we will be able to receive it and resume initialization of the VSCSI adapter. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/ibmvscsi')
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
index 041958453e2a..3d391dc3f11f 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
@@ -1849,8 +1849,7 @@ static void ibmvscsi_do_work(struct ibmvscsi_host_data *hostdata)
rc = ibmvscsi_ops->reset_crq_queue(&hostdata->queue, hostdata);
if (!rc)
rc = ibmvscsi_ops->send_crq(hostdata, 0xC001000000000000LL, 0);
- if (!rc)
- rc = vio_enable_interrupts(to_vio_dev(hostdata->dev));
+ vio_enable_interrupts(to_vio_dev(hostdata->dev));
} else if (hostdata->reenable_crq) {
smp_rmb();
action = "enable";