aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ibmvscsi/ibmvfc.c
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2008-12-03 12:02:56 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-12-29 12:24:24 -0500
commita528ab7a324f1dbb3598ae0ecd238ab7dd974294 (patch)
treeacf24e35dd3d4d11af2410b5865479a571534220 /drivers/scsi/ibmvscsi/ibmvfc.c
parent1c41fa8288277e76785acb50f52bb2f39509f903 (diff)
[SCSI] ibmvfc: Fix errors due to inconsistent command data
In order to ensure the VIOS sees a consistent command buffer, we need to add a memory barrier after building the command buffer but before sending the command. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/ibmvscsi/ibmvfc.c')
-rw-r--r--drivers/scsi/ibmvscsi/ibmvfc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
index 2aa3d695d548..a401e938a87a 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
@@ -1381,6 +1381,8 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt,
1381 add_timer(&evt->timer); 1381 add_timer(&evt->timer);
1382 } 1382 }
1383 1383
1384 mb();
1385
1384 if ((rc = ibmvfc_send_crq(vhost, crq_as_u64[0], crq_as_u64[1]))) { 1386 if ((rc = ibmvfc_send_crq(vhost, crq_as_u64[0], crq_as_u64[1]))) {
1385 list_del(&evt->queue); 1387 list_del(&evt->queue);
1386 del_timer(&evt->timer); 1388 del_timer(&evt->timer);