diff options
Diffstat (limited to 'drivers/firmware/efi/cper.c')
| -rw-r--r-- | drivers/firmware/efi/cper.c | 15 | 
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c index 8fa977c7861f..addf0749dd8b 100644 --- a/drivers/firmware/efi/cper.c +++ b/drivers/firmware/efi/cper.c @@ -390,6 +390,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,  |