On 6/26/15, 9:33 AM, "Mauricio Faria de Oliveira" <mauricfo@xxxxxxxxxxxxxxxxxx> wrote: >Commit f3ddac1918fe963bcbf8d407a3a3c0881b47248b ("[SCSI] qla2xxx: >Disable adapter when we encounter a PCI disconnect.") has introduced a >code that disables the board, releasing some resources, when reading >0xffffffff. > >In case this happens when there is an EEH, this read will trigger EEH >detection and set PCI channel offline. EEH will be able to recover the >card from this state by doing a reset, so it's a better option than >simply disabling the card. > >Since eeh_check_failure will mark the channel as offline before >returning the read value, in case there really was an EEH, we can simply >check for pci_channel_offline, preventing the board_disable code from >running if it's true. > >Without this patch, EEH code will try to access those same resources >that board_disable will try to free. This race can cause EEH recovery to >fail. > >[ 504.370577] EEH: Notify device driver to resume >[ 504.370580] qla2xxx [0001:07:00.0]-9002:2: The device failed to >resume I/O from slot/link_reset. > >Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxxxxxxx> >Cc: <cascardo@xxxxxxxxxx> >Cc: <mauricfo@xxxxxxxxxxxxxxxxxx> >--- > drivers/scsi/qla2xxx/qla_isr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/drivers/scsi/qla2xxx/qla_isr.c >b/drivers/scsi/qla2xxx/qla_isr.c >index a04a1b1..8132926 100644 >--- a/drivers/scsi/qla2xxx/qla_isr.c >+++ b/drivers/scsi/qla2xxx/qla_isr.c >@@ -116,7 +116,7 @@ bool > qla2x00_check_reg32_for_disconnect(scsi_qla_host_t *vha, uint32_t reg) > { > /* Check for PCI disconnection */ >- if (reg == 0xffffffff) { >+ if (reg == 0xffffffff && !pci_channel_offline(vha->hw->pdev)) { > if (!test_and_set_bit(PFLG_DISCONNECTED, &vha->pci_flags) && > !test_bit(PFLG_DRIVER_REMOVING, &vha->pci_flags) && > !test_bit(PFLG_DRIVER_PROBING, &vha->pci_flags)) { >-- >1.7.10.4 > > Looks good. Acked-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > >-- >To unsubscribe from this list: send the line "unsubscribe linux-scsi" in >the body of a message to majordomo@xxxxxxxxxxxxxxx >More majordomo info at http://vger.kernel.org/majordomo-info.html
<<attachment: winmail.dat>>