|
|
@@ -402,6 +402,21 @@ static void cper_print_pcie(const char *pfx, const struct cper_sec_pcie *pcie,
|
|
|
printk(
|
|
|
"%s""bridge: secondary_status: 0x%04x, control: 0x%04x\n",
|
|
|
pfx, pcie->bridge.secondary_status, pcie->bridge.control);
|
|
|
+
|
|
|
+ /* Fatal errors call __ghes_panic() before AER handler prints this */
|
|
|
+ if ((pcie->validation_bits & CPER_PCIE_VALID_AER_INFO) &&
|
|
|
+ (gdata->error_severity & CPER_SEV_FATAL)) {
|
|
|
+ struct aer_capability_regs *aer;
|
|
|
+
|
|
|
+ aer = (struct aer_capability_regs *)pcie->aer_info;
|
|
|
+ printk("%saer_uncor_status: 0x%08x, aer_uncor_mask: 0x%08x\n",
|
|
|
+ pfx, aer->uncor_status, aer->uncor_mask);
|
|
|
+ printk("%saer_uncor_severity: 0x%08x\n",
|
|
|
+ pfx, aer->uncor_severity);
|
|
|
+ printk("%sTLP Header: %08x %08x %08x %08x\n", pfx,
|
|
|
+ aer->header_log.dw0, aer->header_log.dw1,
|
|
|
+ aer->header_log.dw2, aer->header_log.dw3);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void cper_print_tstamp(const char *pfx,
|