ACPI / APEI: Force fatal AER severity when component has been reset
authorBetty Dall <betty.dall@hp.com>
Thu, 6 Jun 2013 18:10:50 +0000 (12:10 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 6 Jun 2013 20:39:16 +0000 (14:39 -0600)
The CPER error record has a reset bit that indicates that the platform
has reset the component. The reset bit can be set for any severity
error including recoverable.  From the AER code path's perspective,
any error is fatal if the component has been reset.  This patch
upgrades the severity of the AER recovery to AER_FATAL whenever the
CPER error record indicates that the component has been reset.

[bhelgaas: s/bus has been reset/component has been reset/]
Signed-off-by: Betty Dall <betty.dall@hp.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/acpi/apei/ghes.c

index d668a8ae602bb4533b793911408cf138c047a4ce..ab315515908eb921caa1f0768d5c79aceb6293a2 100644 (file)
@@ -449,9 +449,19 @@ static void ghes_do_proc(struct ghes *ghes,
                            pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO) {
                                unsigned int devfn;
                                int aer_severity;
+
                                devfn = PCI_DEVFN(pcie_err->device_id.device,
                                                  pcie_err->device_id.function);
                                aer_severity = cper_severity_to_aer(sev);
+
+                               /*
+                                * If firmware reset the component to contain
+                                * the error, we must reinitialize it before
+                                * use, so treat it as a fatal AER error.
+                                */
+                               if (gdata->flags & CPER_SEC_RESET)
+                                       aer_severity = AER_FATAL;
+
                                aer_recover_queue(pcie_err->device_id.segment,
                                                  pcie_err->device_id.bus,
                                                  devfn, aer_severity);
This page took 0.025297 seconds and 5 git commands to generate.