|
@@ -117,6 +117,21 @@ int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int pci_cleanup_aer_correct_error_status(struct pci_dev *dev)
|
|
|
|
+{
|
|
|
|
+ int pos;
|
|
|
|
+ u32 status;
|
|
|
|
+
|
|
|
|
+ pos = pci_find_aer_capability(dev);
|
|
|
|
+ if (!pos)
|
|
|
|
+ return -EIO;
|
|
|
|
+
|
|
|
|
+ pci_read_config_dword(dev, pos + PCI_ERR_COR_STATUS, &status);
|
|
|
|
+ pci_write_config_dword(dev, pos + PCI_ERR_COR_STATUS, status);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
static int find_device_iter(struct device *device, void *data)
|
|
static int find_device_iter(struct device *device, void *data)
|
|
{
|
|
{
|
|
struct pci_dev *dev;
|
|
struct pci_dev *dev;
|
|
@@ -741,4 +756,5 @@ EXPORT_SYMBOL_GPL(pci_find_aer_capability);
|
|
EXPORT_SYMBOL_GPL(pci_enable_pcie_error_reporting);
|
|
EXPORT_SYMBOL_GPL(pci_enable_pcie_error_reporting);
|
|
EXPORT_SYMBOL_GPL(pci_disable_pcie_error_reporting);
|
|
EXPORT_SYMBOL_GPL(pci_disable_pcie_error_reporting);
|
|
EXPORT_SYMBOL_GPL(pci_cleanup_aer_uncorrect_error_status);
|
|
EXPORT_SYMBOL_GPL(pci_cleanup_aer_uncorrect_error_status);
|
|
|
|
+EXPORT_SYMBOL_GPL(pci_cleanup_aer_correct_error_status);
|
|
|
|
|