diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2023-04-21 00:16:32 +0300 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2023-04-21 00:16:32 +0300 |
commit | 1a65a3271dad3a03eb4d34e1ff6a3ad6c3ffb761 (patch) | |
tree | 348d4d691903dc8f1bad690677b5641ffa8e40bc /drivers | |
parent | fe15c26ee26efa11741a7b632e9f23b01aca4cc6 (diff) | |
parent | 774820b362b07b903354470f9372d528b327a3e5 (diff) | |
download | linux-1a65a3271dad3a03eb4d34e1ff6a3ad6c3ffb761.tar.xz |
Merge branch 'pci/aer'
- Remove unnecessary <linux/aer.h> includes (Bjorn Helgaas)
- Clear Device Status after EDR error recovery. Firmware collects EDR
error information, but the OS is responsible for clearing it (Kuppuswamy
Sathyanarayanan)
* pci/aer:
PCI/EDR: Add edr_handle_event() comments
PCI/EDR: Clear Device Status after EDR error recovery
efi/cper: Remove unnecessary aer.h include
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firmware/efi/cper-arm.c | 1 | ||||
-rw-r--r-- | drivers/pci/pcie/edr.c | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/firmware/efi/cper-arm.c b/drivers/firmware/efi/cper-arm.c index 36d3b8b9da47..fa9c1c3bf168 100644 --- a/drivers/firmware/efi/cper-arm.c +++ b/drivers/firmware/efi/cper-arm.c @@ -12,7 +12,6 @@ #include <linux/dmi.h> #include <linux/acpi.h> #include <linux/pci.h> -#include <linux/aer.h> #include <linux/printk.h> #include <linux/bcd.h> #include <acpi/ghes.h> diff --git a/drivers/pci/pcie/edr.c b/drivers/pci/pcie/edr.c index a6b9b479b97a..5f4914d313a1 100644 --- a/drivers/pci/pcie/edr.c +++ b/drivers/pci/pcie/edr.c @@ -151,9 +151,18 @@ static void edr_handle_event(acpi_handle handle, u32 event, void *data) if (event != ACPI_NOTIFY_DISCONNECT_RECOVER) return; + /* + * pdev is a Root Port or Downstream Port that is still present and + * has triggered a containment event, e.g., DPC, so its child + * devices have been disconnected (ACPI r6.5, sec 5.6.6). + */ pci_info(pdev, "EDR event received\n"); - /* Locate the port which issued EDR event */ + /* + * Locate the port that experienced the containment event. pdev + * may be that port or a parent of it (PCI Firmware r3.3, sec + * 4.6.13). + */ edev = acpi_dpc_port_get(pdev); if (!edev) { pci_err(pdev, "Firmware failed to locate DPC port\n"); @@ -193,6 +202,7 @@ send_ost: */ if (estate == PCI_ERS_RESULT_RECOVERED) { pci_dbg(edev, "DPC port successfully recovered\n"); + pcie_clear_device_status(edev); acpi_send_edr_status(pdev, edev, EDR_OST_SUCCESS); } else { pci_dbg(edev, "DPC port recovery failed\n"); |