Commit efc7a288 authored by Anil Chintalapati (achintal)'s avatar Anil Chintalapati (achintal) Committed by Christoph Hellwig
Browse files

fnic: IOMMU Fault occurs when IO and abort IO is out of order

When I/O is aborted by mid-layer, fnic FW will complete the I/O before
completing the abort task. In some cases abort request is completed before
the I/O, which could lead to inconsistent driver and firmware states.
In this case firmware reset would clear the inconsistent state.

Signed-off-by: default avatarAnil Chintalapati <>
Signed-off-by: default avatarSesidhar Baddela <>
Signed-off-by: default avatarHiral Shah <>
Signed-off-by: default avatarChristoph Hellwig <>
parent e461338b
......@@ -39,7 +39,7 @@
#define DRV_NAME "fnic"
#define DRV_DESCRIPTION "Cisco FCoE HBA Driver"
#define DRV_VERSION ""
#define DRV_VERSION ""
#define PFX DRV_NAME ": "
#define DFX DRV_NAME "%d: "
......@@ -1892,6 +1892,21 @@ int fnic_abort_cmd(struct scsi_cmnd *sc)
goto fnic_abort_cmd_end;
/* IO out of order */
spin_unlock_irqrestore(io_lock, flags);
FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
"Issuing Host reset due to out of order IO\n");
if (fnic_host_reset(sc) == FAILED) {
FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
"fnic_host_reset failed.\n");
ret = FAILED;
goto fnic_abort_cmd_end;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment