• James Smart's avatar
    lpfc: Add iotag memory barrier · 17c06c69
    James Smart authored
    commit 27f344eb15dd0da80ebec80c7245e8c85043f841 upstream.
    Add a memory barrier to ensure the valid bit is read before
    any of the cqe payload is read. This fixes an issue seen
    on Power where the cqe payload was getting loaded before
    the valid bit. When this occurred, we saw an iotag out of
    range error when a command completed, but since the iotag
    looked invalid the command didn't get completed to scsi core.
    Later we hit the command timeout, attempted to abort the command,
    then waited for the aborted command to get returned. Since the
    adapter already returned the command, we timeout waiting,
    and end up escalating EEH all the way to host reset. This
    patch fixes this issue.
    Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
    Signed-off-by: default avatarJames Smart <james.smart@emulex.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
lpfc_sli.c 501 KB