lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 28 Sep 2018 15:54:45 +0530
From:   poza@...eaurora.org
To:     Bjorn Helgaas <helgaas@...nel.org>
Cc:     Bjorn Helgaas <bhelgaas@...gle.com>,
        Philippe Ombredanne <pombredanne@...b.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Kate Stewart <kstewart@...uxfoundation.org>,
        linux-pci@...r.kernel.org, Keith Busch <keith.busch@...el.com>,
        Wei Zhang <wzhang@...com>, linux-kernel@...r.kernel.org,
        Giovanni Cabiddu <giovanni.cabiddu@...el.com>,
        Herbert Xu <herbert@...dor.apana.org.au>,
        "David S . Miller" <davem@...emloft.net>,
        Dan Williams <dan.j.williams@...el.com>,
        Kees Cook <keescook@...omium.org>,
        Sagi Grimberg <sagi@...mberg.me>,
        Adaptec OEM Raid Solutions <aacraid@...rosemi.com>,
        "James E . J . Bottomley" <jejb@...ux.vnet.ibm.com>,
        "Martin K . Petersen" <martin.petersen@...cle.com>,
        Sinan Kaya <okaya@...nel.org>
Subject: Re: [PATCH] PCI/AER: Clear uncorrectable error status for device

On 2018-09-27 03:38, Bjorn Helgaas wrote:
> [+cc Sinan, LKML]
> 
> On Tue, Sep 18, 2018 at 04:20:29AM -0400, Oza Pawandeep wrote:
>> PCI based device drivers handles ERR_NONFATAL  by registering
>> pci_error_handlers. some of the drivers clear AER uncorrectable status
>> in slot_reset while some in resume.
>> 
>> Drivers should not have responsibility of clearing the AER status, 
>> instead
>> shall be done by error and recovery framework defined in err.c
> 
> Agreed, and Keith's patch 43c9a34fe04e ("PCI/ERR: Always use the first
> downstream port") [1], which is queued on pci/hotplug for v4.20, does
> call pci_cleanup_aer_uncorrect_error_status() at the end of
> pcie_do_recovery().
> 
> 1) Does that seem like the right place?
> 
> 2) I guess all we need now would be to remove the calls from the
>    drivers?
> 
> 3) If we remove all the calls from the drivers, we should remove the
>    declaration from include/linux/aer.h, too.
> 
> I can take care of these updates if we agree they're the right thing
> to do.

sure Bjorn. this patch already removes all the calls from drivers and 
adds
call to pci_cleanup_aer_uncorrect_error_status().

Please feel free to modify or adapt and take care.

Regards,
Oza.

> 
> [1]
> http://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/commit/?id=43c9a34fe04e
> 
>> Clear the status while resuming, after reset_link was successful.
>> 
>> Signed-off-by: Oza Pawandeep <poza@...eaurora.org>
>> 
>> diff --git a/drivers/crypto/qat/qat_common/adf_aer.c 
>> b/drivers/crypto/qat/qat_common/adf_aer.c
>> index da8a2d3..61ded36 100644
>> --- a/drivers/crypto/qat/qat_common/adf_aer.c
>> +++ b/drivers/crypto/qat/qat_common/adf_aer.c
>> @@ -198,7 +198,6 @@ static pci_ers_result_t adf_slot_reset(struct 
>> pci_dev *pdev)
>>  		pr_err("QAT: Can't find acceleration device\n");
>>  		return PCI_ERS_RESULT_DISCONNECT;
>>  	}
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	if (adf_dev_aer_schedule_reset(accel_dev, ADF_DEV_RESET_SYNC))
>>  		return PCI_ERS_RESULT_DISCONNECT;
>> 
>> diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
>> index 4fa4c06..80c475f 100644
>> --- a/drivers/dma/ioat/init.c
>> +++ b/drivers/dma/ioat/init.c
>> @@ -1267,12 +1267,6 @@ static pci_ers_result_t 
>> ioat_pcie_error_slot_reset(struct pci_dev *pdev)
>>  		pci_wake_from_d3(pdev, false);
>>  	}
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		dev_err(&pdev->dev,
>> -			"AER uncorrect error status clear failed: %#x\n", err);
>> -	}
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/infiniband/hw/hfi1/pcie.c 
>> b/drivers/infiniband/hw/hfi1/pcie.c
>> index baf7c32..38bc804 100644
>> --- a/drivers/infiniband/hw/hfi1/pcie.c
>> +++ b/drivers/infiniband/hw/hfi1/pcie.c
>> @@ -655,7 +655,6 @@ pci_resume(struct pci_dev *pdev)
>>  	struct hfi1_devdata *dd = pci_get_drvdata(pdev);
>> 
>>  	dd_dev_info(dd, "HFI1 resume function called\n");
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	/*
>>  	 * Running jobs will fail, since it's asynchronous
>>  	 * unlike sysfs-requested reset.   Better than
>> diff --git a/drivers/infiniband/hw/qib/qib_pcie.c 
>> b/drivers/infiniband/hw/qib/qib_pcie.c
>> index 5ac7b31..30595b3 100644
>> --- a/drivers/infiniband/hw/qib/qib_pcie.c
>> +++ b/drivers/infiniband/hw/qib/qib_pcie.c
>> @@ -597,7 +597,6 @@ qib_pci_resume(struct pci_dev *pdev)
>>  	struct qib_devdata *dd = pci_get_drvdata(pdev);
>> 
>>  	qib_devinfo(pdev, "QIB resume function called\n");
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	/*
>>  	 * Running jobs will fail, since it's asynchronous
>>  	 * unlike sysfs-requested reset.   Better than
>> diff --git a/drivers/net/ethernet/atheros/alx/main.c 
>> b/drivers/net/ethernet/atheros/alx/main.c
>> index 567ee54..0d0b6a4 100644
>> --- a/drivers/net/ethernet/atheros/alx/main.c
>> +++ b/drivers/net/ethernet/atheros/alx/main.c
>> @@ -1960,8 +1960,6 @@ static pci_ers_result_t 
>> alx_pci_error_slot_reset(struct pci_dev *pdev)
>>  	if (!alx_reset_mac(hw))
>>  		rc = PCI_ERS_RESULT_RECOVERED;
>>  out:
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	rtnl_unlock();
>> 
>>  	return rc;
>> diff --git a/drivers/net/ethernet/broadcom/bnx2.c 
>> b/drivers/net/ethernet/broadcom/bnx2.c
>> index 122fdb8..bbb2471 100644
>> --- a/drivers/net/ethernet/broadcom/bnx2.c
>> +++ b/drivers/net/ethernet/broadcom/bnx2.c
>> @@ -8793,13 +8793,6 @@ static pci_ers_result_t 
>> bnx2_io_slot_reset(struct pci_dev *pdev)
>>  	if (!(bp->flags & BNX2_FLAG_AER_ENABLED))
>>  		return result;
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		dev_err(&pdev->dev,
>> -			"pci_cleanup_aer_uncorrect_error_status failed 0x%0x\n",
>> -			 err); /* non-fatal, continue */
>> -	}
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 
>> b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
>> index 5b1ed24..cfb6c89 100644
>> --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
>> +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
>> @@ -14379,14 +14379,6 @@ static pci_ers_result_t 
>> bnx2x_io_slot_reset(struct pci_dev *pdev)
>> 
>>  	rtnl_unlock();
>> 
>> -	/* If AER, perform cleanup of the PCIe registers */
>> -	if (bp->flags & AER_ENABLED) {
>> -		if (pci_cleanup_aer_uncorrect_error_status(pdev))
>> -			BNX2X_ERR("pci_cleanup_aer_uncorrect_error_status failed\n");
>> -		else
>> -			DP(NETIF_MSG_HW, "pci_cleanup_aer_uncorrect_error_status 
>> succeeded\n");
>> -	}
>> -
>>  	return PCI_ERS_RESULT_RECOVERED;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c 
>> b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
>> index 176fc9f..b4d1db9 100644
>> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
>> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
>> @@ -9076,13 +9076,6 @@ static pci_ers_result_t 
>> bnxt_io_slot_reset(struct pci_dev *pdev)
>> 
>>  	rtnl_unlock();
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		dev_err(&pdev->dev,
>> -			"pci_cleanup_aer_uncorrect_error_status failed 0x%0x\n",
>> -			 err); /* non-fatal, continue */
>> -	}
>> -
>>  	return PCI_ERS_RESULT_RECOVERED;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 
>> b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>> index dd04a2f..b6c1478a 100644
>> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
>> @@ -4721,7 +4721,6 @@ static pci_ers_result_t eeh_slot_reset(struct 
>> pci_dev *pdev)
>>  	pci_set_master(pdev);
>>  	pci_restore_state(pdev);
>>  	pci_save_state(pdev);
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> 
>>  	if (t4_wait_dev_ready(adap->regs) < 0)
>>  		return PCI_ERS_RESULT_DISCONNECT;
>> diff --git a/drivers/net/ethernet/emulex/benet/be_main.c 
>> b/drivers/net/ethernet/emulex/benet/be_main.c
>> index 8f75500..c274006 100644
>> --- a/drivers/net/ethernet/emulex/benet/be_main.c
>> +++ b/drivers/net/ethernet/emulex/benet/be_main.c
>> @@ -6063,7 +6063,6 @@ static pci_ers_result_t be_eeh_reset(struct 
>> pci_dev *pdev)
>>  	if (status)
>>  		return PCI_ERS_RESULT_DISCONNECT;
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	be_clear_error(adapter, BE_CLEAR_ALL);
>>  	return PCI_ERS_RESULT_RECOVERED;
>>  }
>> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c 
>> b/drivers/net/ethernet/intel/e1000e/netdev.c
>> index 3ba0c90..7cd2332 100644
>> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
>> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
>> @@ -6854,8 +6854,6 @@ static pci_ers_result_t 
>> e1000_io_slot_reset(struct pci_dev *pdev)
>>  		result = PCI_ERS_RESULT_RECOVERED;
>>  	}
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c 
>> b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
>> index 15071e4..55138d6 100644
>> --- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
>> +++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
>> @@ -2462,8 +2462,6 @@ static pci_ers_result_t 
>> fm10k_io_slot_reset(struct pci_dev *pdev)
>>  		result = PCI_ERS_RESULT_RECOVERED;
>>  	}
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c 
>> b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> index c944bd1..ae6aef2 100644
>> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
>> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> @@ -14245,14 +14245,6 @@ static pci_ers_result_t 
>> i40e_pci_error_slot_reset(struct pci_dev *pdev)
>>  			result = PCI_ERS_RESULT_DISCONNECT;
>>  	}
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		dev_info(&pdev->dev,
>> -			 "pci_cleanup_aer_uncorrect_error_status failed 0x%0x\n",
>> -			 err);
>> -		/* non-fatal, continue */
>> -	}
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/intel/igb/igb_main.c 
>> b/drivers/net/ethernet/intel/igb/igb_main.c
>> index c77fda0..786b973 100644
>> --- a/drivers/net/ethernet/intel/igb/igb_main.c
>> +++ b/drivers/net/ethernet/intel/igb/igb_main.c
>> @@ -8991,7 +8991,6 @@ static pci_ers_result_t igb_io_slot_reset(struct 
>> pci_dev *pdev)
>>  	struct igb_adapter *adapter = netdev_priv(netdev);
>>  	struct e1000_hw *hw = &adapter->hw;
>>  	pci_ers_result_t result;
>> -	int err;
>> 
>>  	if (pci_enable_device_mem(pdev)) {
>>  		dev_err(&pdev->dev,
>> @@ -9015,14 +9014,6 @@ static pci_ers_result_t 
>> igb_io_slot_reset(struct pci_dev *pdev)
>>  		result = PCI_ERS_RESULT_RECOVERED;
>>  	}
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		dev_err(&pdev->dev,
>> -			"pci_cleanup_aer_uncorrect_error_status failed 0x%0x\n",
>> -			err);
>> -		/* non-fatal, continue */
>> -	}
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c 
>> b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> index 3e87dbb..a2f8ce9 100644
>> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
>> @@ -10864,8 +10864,6 @@ static pci_ers_result_t 
>> ixgbe_io_error_detected(struct pci_dev *pdev,
>>  			/* Free device reference count */
>>  			pci_dev_put(vfdev);
>>  		}
>> -
>> -		pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	}
>> 
>>  	/*
>> @@ -10935,13 +10933,6 @@ static pci_ers_result_t 
>> ixgbe_io_slot_reset(struct pci_dev *pdev)
>>  		result = PCI_ERS_RESULT_RECOVERED;
>>  	}
>> 
>> -	err = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (err) {
>> -		e_dev_err("pci_cleanup_aer_uncorrect_error_status "
>> -			  "failed 0x%0x\n", err);
>> -		/* non-fatal, continue */
>> -	}
>> -
>>  	return result;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c 
>> b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
>> index 8259e83..d0d276c 100644
>> --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
>> +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
>> @@ -1790,11 +1790,6 @@ static pci_ers_result_t 
>> netxen_io_slot_reset(struct pci_dev *pdev)
>>  	return err ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED;
>>  }
>> 
>> -static void netxen_io_resume(struct pci_dev *pdev)
>> -{
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -}
>> -
>>  static void netxen_nic_shutdown(struct pci_dev *pdev)
>>  {
>>  	struct netxen_adapter *adapter = pci_get_drvdata(pdev);
>> @@ -3490,7 +3485,6 @@ netxen_free_ip_list(struct netxen_adapter 
>> *adapter, bool master)
>>  static const struct pci_error_handlers netxen_err_handler = {
>>  	.error_detected = netxen_io_error_detected,
>>  	.slot_reset = netxen_io_slot_reset,
>> -	.resume = netxen_io_resume,
>>  };
>> 
>>  static struct pci_driver netxen_driver = {
>> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c 
>> b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
>> index 569d54e..635ac73 100644
>> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
>> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
>> @@ -4232,7 +4232,6 @@ static void qlcnic_83xx_io_resume(struct pci_dev 
>> *pdev)
>>  {
>>  	struct qlcnic_adapter *adapter = pci_get_drvdata(pdev);
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	if (test_and_clear_bit(__QLCNIC_AER, &adapter->state))
>>  		qlcnic_83xx_aer_start_poll_work(adapter);
>>  }
>> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c 
>> b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
>> index 2d38d1a..6b3ea53 100644
>> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
>> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
>> @@ -3975,7 +3975,6 @@ static void qlcnic_82xx_io_resume(struct pci_dev 
>> *pdev)
>>  	u32 state;
>>  	struct qlcnic_adapter *adapter = pci_get_drvdata(pdev);
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	state = QLC_SHARED_REG_RD32(adapter, QLCNIC_CRB_DEV_STATE);
>>  	if (state == QLCNIC_DEV_READY && test_and_clear_bit(__QLCNIC_AER,
>>  							    &adapter->state))
>> diff --git a/drivers/net/ethernet/sfc/efx.c 
>> b/drivers/net/ethernet/sfc/efx.c
>> index ad4a354..72c63ee 100644
>> --- a/drivers/net/ethernet/sfc/efx.c
>> +++ b/drivers/net/ethernet/sfc/efx.c
>> @@ -3843,13 +3843,6 @@ static pci_ers_result_t 
>> efx_io_slot_reset(struct pci_dev *pdev)
>>  		status =  PCI_ERS_RESULT_DISCONNECT;
>>  	}
>> 
>> -	rc = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (rc) {
>> -		netif_err(efx, hw, efx->net_dev,
>> -		"pci_cleanup_aer_uncorrect_error_status failed (%d)\n", rc);
>> -		/* Non-fatal error. Continue. */
>> -	}
>> -
>>  	return status;
>>  }
>> 
>> diff --git a/drivers/net/ethernet/sfc/falcon/efx.c 
>> b/drivers/net/ethernet/sfc/falcon/efx.c
>> index dd5530a..1b394ea 100644
>> --- a/drivers/net/ethernet/sfc/falcon/efx.c
>> +++ b/drivers/net/ethernet/sfc/falcon/efx.c
>> @@ -3194,13 +3194,6 @@ static pci_ers_result_t 
>> ef4_io_slot_reset(struct pci_dev *pdev)
>>  		status =  PCI_ERS_RESULT_DISCONNECT;
>>  	}
>> 
>> -	rc = pci_cleanup_aer_uncorrect_error_status(pdev);
>> -	if (rc) {
>> -		netif_err(efx, hw, efx->net_dev,
>> -		"pci_cleanup_aer_uncorrect_error_status failed (%d)\n", rc);
>> -		/* Non-fatal error. Continue. */
>> -	}
>> -
>>  	return status;
>>  }
>> 
>> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
>> index fc33804..9f9ff21 100644
>> --- a/drivers/nvme/host/pci.c
>> +++ b/drivers/nvme/host/pci.c
>> @@ -2678,7 +2678,6 @@ static void nvme_error_resume(struct pci_dev 
>> *pdev)
>>  	struct nvme_dev *dev = pci_get_drvdata(pdev);
>> 
>>  	flush_work(&dev->ctrl.reset_work);
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  }
>> 
>>  static const struct pci_error_handlers nvme_err_handler = {
>> diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
>> index 44598dc..81d65bf 100644
>> --- a/drivers/pci/pcie/err.c
>> +++ b/drivers/pci/pcie/err.c
>> @@ -265,6 +265,8 @@ static pci_ers_result_t 
>> broadcast_error_message(struct pci_dev *dev,
>>  		 * The error is non fatal so the bus is ok; just invoke
>>  		 * the callback for the function that logged the error.
>>  		 */
>> +		if (cb == report_resume)
>> +			pci_cleanup_aer_uncorrect_error_status(dev);
>>  		cb(dev, &result_data);
>>  	}
>> 
>> diff --git a/drivers/scsi/aacraid/linit.c 
>> b/drivers/scsi/aacraid/linit.c
>> index 0444357..1bcdd50 100644
>> --- a/drivers/scsi/aacraid/linit.c
>> +++ b/drivers/scsi/aacraid/linit.c
>> @@ -2055,8 +2055,6 @@ static void aac_pci_resume(struct pci_dev *pdev)
>>  	struct scsi_device *sdev = NULL;
>>  	struct aac_dev *aac = (struct aac_dev *)shost_priv(shost);
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	if (aac_adapter_ioremap(aac, aac->base_size)) {
>> 
>>  		dev_err(&pdev->dev, "aacraid: ioremap failed\n");
>> diff --git a/drivers/scsi/be2iscsi/be_main.c 
>> b/drivers/scsi/be2iscsi/be_main.c
>> index 818d185..ed7ed15 100644
>> --- a/drivers/scsi/be2iscsi/be_main.c
>> +++ b/drivers/scsi/be2iscsi/be_main.c
>> @@ -5518,7 +5518,6 @@ static pci_ers_result_t beiscsi_eeh_reset(struct 
>> pci_dev *pdev)
>>  		return PCI_ERS_RESULT_DISCONNECT;
>>  	}
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	return PCI_ERS_RESULT_RECOVERED;
>>  }
>> 
>> diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
>> index bd7e6a6f..911efc9 100644
>> --- a/drivers/scsi/bfa/bfad.c
>> +++ b/drivers/scsi/bfa/bfad.c
>> @@ -1569,8 +1569,6 @@ bfad_pci_slot_reset(struct pci_dev *pdev)
>>  		if (pci_set_dma_mask(bfad->pcidev, DMA_BIT_MASK(32)) != 0)
>>  			goto out_disable_device;
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	if (restart_bfa(bfad) == -1)
>>  		goto out_disable_device;
>> 
>> diff --git a/drivers/scsi/csiostor/csio_init.c 
>> b/drivers/scsi/csiostor/csio_init.c
>> index ed2dae6..66b230b 100644
>> --- a/drivers/scsi/csiostor/csio_init.c
>> +++ b/drivers/scsi/csiostor/csio_init.c
>> @@ -1102,7 +1102,6 @@ csio_pci_slot_reset(struct pci_dev *pdev)
>>  	pci_set_master(pdev);
>>  	pci_restore_state(pdev);
>>  	pci_save_state(pdev);
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> 
>>  	/* Bring HW s/m to ready state.
>>  	 * but don't resume IOs.
>> diff --git a/drivers/scsi/lpfc/lpfc_init.c 
>> b/drivers/scsi/lpfc/lpfc_init.c
>> index 52cae87..305ea062 100644
>> --- a/drivers/scsi/lpfc/lpfc_init.c
>> +++ b/drivers/scsi/lpfc/lpfc_init.c
>> @@ -11331,10 +11331,6 @@ lpfc_io_resume_s3(struct pci_dev *pdev)
>> 
>>  	/* Bring device online, it will be no-op for non-fatal error resume 
>> */
>>  	lpfc_online(phba);
>> -
>> -	/* Clean up Advanced Error Reporting (AER) if needed */
>> -	if (phba->hba_flag & HBA_AER_ENABLED)
>> -		pci_cleanup_aer_uncorrect_error_status(pdev);
>>  }
>> 
>>  /**
>> @@ -12146,10 +12142,6 @@ lpfc_io_resume_s4(struct pci_dev *pdev)
>>  		/* Bring the device back online */
>>  		lpfc_online(phba);
>>  	}
>> -
>> -	/* Clean up Advanced Error Reporting (AER) if needed */
>> -	if (phba->hba_flag & HBA_AER_ENABLED)
>> -		pci_cleanup_aer_uncorrect_error_status(pdev);
>>  }
>> 
>>  /**
>> diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
>> b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> index b8d131a..602f659 100644
>> --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> @@ -10965,7 +10965,6 @@ scsih_pci_resume(struct pci_dev *pdev)
>> 
>>  	pr_info(MPT3SAS_FMT "PCI error: resume callback!!\n", ioc->name);
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	mpt3sas_base_start_watchdog(ioc);
>>  	scsi_unblock_requests(ioc->shost);
>>  }
>> diff --git a/drivers/scsi/qla2xxx/qla_os.c 
>> b/drivers/scsi/qla2xxx/qla_os.c
>> index e881fce..5fc1a49 100644
>> --- a/drivers/scsi/qla2xxx/qla_os.c
>> +++ b/drivers/scsi/qla2xxx/qla_os.c
>> @@ -6823,8 +6823,6 @@ qla2xxx_pci_resume(struct pci_dev *pdev)
>>  		    "The device failed to resume I/O from slot/link_reset.\n");
>>  	}
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>> -
>>  	ha->flags.eeh_busy = 0;
>>  }
>> 
>> diff --git a/drivers/scsi/qla4xxx/ql4_os.c 
>> b/drivers/scsi/qla4xxx/ql4_os.c
>> index 0e13349..ab3a924 100644
>> --- a/drivers/scsi/qla4xxx/ql4_os.c
>> +++ b/drivers/scsi/qla4xxx/ql4_os.c
>> @@ -9824,7 +9824,6 @@ qla4xxx_pci_resume(struct pci_dev *pdev)
>>  		     __func__);
>>  	}
>> 
>> -	pci_cleanup_aer_uncorrect_error_status(pdev);
>>  	clear_bit(AF_EEH_BUSY, &ha->flags);
>>  }
>> 
>> --
>> 2.7.4
>> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ