aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/apei/ghes.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index d668a8ae602b..ab315515908e 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -449,9 +449,19 @@ static void ghes_do_proc(struct ghes *ghes,
449 pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO) { 449 pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO) {
450 unsigned int devfn; 450 unsigned int devfn;
451 int aer_severity; 451 int aer_severity;
452
452 devfn = PCI_DEVFN(pcie_err->device_id.device, 453 devfn = PCI_DEVFN(pcie_err->device_id.device,
453 pcie_err->device_id.function); 454 pcie_err->device_id.function);
454 aer_severity = cper_severity_to_aer(sev); 455 aer_severity = cper_severity_to_aer(sev);
456
457 /*
458 * If firmware reset the component to contain
459 * the error, we must reinitialize it before
460 * use, so treat it as a fatal AER error.
461 */
462 if (gdata->flags & CPER_SEC_RESET)
463 aer_severity = AER_FATAL;
464
455 aer_recover_queue(pcie_err->device_id.segment, 465 aer_recover_queue(pcie_err->device_id.segment,
456 pcie_err->device_id.bus, 466 pcie_err->device_id.bus,
457 devfn, aer_severity); 467 devfn, aer_severity);