• Mauricio Faria de Oliveira's avatar
    scsi: qla2xxx: do not abort all commands in the adapter during EEH recovery · c733ab35
    Mauricio Faria de Oliveira authored
    The previous commit 1535aa75 ("qla2xxx: fix invalid DMA access after
    command aborts in PCI device remove") introduced a regression during an
    EEH recovery, since the change to the qla2x00_abort_all_cmds() function
    calls qla2xxx_eh_abort(), which verifies the EEH recovery condition but
    handles it heavy-handed. (commit a465537a "qla2xxx: Disable the
    adapter and skip error recovery in case of register disconnect.")
    
    This problem warrants a more general/optimistic solution right into
    qla2xxx_eh_abort() (eg in case a real command abort arrives during EEH
    recovery, or if it takes long enough to trigger command aborts); but
    it's still worth to add a check to ensure the code added by the previous
    commit is correct and contained within its owner function.
    
    This commit just adds a 'if (!ha->flags.eeh_busy)' check around it.
    (ahem; a trivial fix for this -rc series; sorry for this oversight.)
    
    With it applied, both PCI device remove and EEH recovery works fine.
    
    Fixes: 1535aa75 ("scsi: qla2xxx: fix invalid DMA access after command aborts in PCI device remove")
    Signed-off-by: default avatarMauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Acked-by: default avatarHimanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    c733ab35
qla_os.c 166 KB