[SCSI] ibmvfc: Fix command completion handling
authorBrian King <brking@linux.vnet.ibm.com>
Tue, 20 Apr 2010 19:21:33 +0000 (14:21 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 2 May 2010 15:03:03 +0000 (11:03 -0400)
commitf5832fa2f8dc39adcf3ae348d2d6383163235e79
tree1fea25c52248b213dd44d2ad693959ff29d56495
parent859e816704b4139d15b1ec6a3505f12faef5333a
[SCSI] ibmvfc: Fix command completion handling

Commands which are completed by the VIOS are placed on a CRQ
in kernel memory for the ibmvfc driver to process. Each CRQ
entry is 16 bytes. The ibmvfc driver reads the first 8 bytes
to check if the entry is valid, then reads the next 8 bytes to get
the handle, which is a pointer the completed command. This fixes
an issue seen on Power 7 where the processor reordered the
loads from memory, resulting in processing command completion
with a stale handle. This could result in command timeouts,
and also early completion of commands.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/ibmvscsi/ibmvfc.c