mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 15:22:21 -04:00
PCI/AER: Emit TLP Log only for unmasked errors
Per PCIe r7.0 sec 6.2.5, the prefix and header of an offending TLP is only
recorded for unmasked Uncorrectable Errors. Yet when the AER driver
determines whether a prefix and header has been logged, it does not take
the Uncorrectable Error Mask Register into account. Fix it.
Fixes: 6c2b374d74 ("PCI-Express AER implemetation: AER core and aerdriver")
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org # v2.6.19+
Link: https://patch.msgid.link/2e712b96ba5bfc729d78bfc23f7fb7d285aa3d6d.1784905909.git.lukas@wunner.de
This commit is contained in:
committed by
Bjorn Helgaas
parent
8446e1147f
commit
a8bf2dd750
@@ -954,7 +954,8 @@ void pci_print_aer(struct pci_dev *dev, int aer_severity,
|
||||
status = aer->uncor_status;
|
||||
mask = aer->uncor_mask;
|
||||
info.level = KERN_ERR;
|
||||
tlp_header_valid = tlp_header_logged(status, aer->cap_control);
|
||||
tlp_header_valid = tlp_header_logged(status & ~mask,
|
||||
aer->cap_control);
|
||||
}
|
||||
|
||||
info.status = status;
|
||||
@@ -1343,7 +1344,7 @@ int aer_get_device_error_info(struct aer_err_info *info, int i)
|
||||
pci_read_config_dword(dev, aer + PCI_ERR_CAP, &aercc);
|
||||
info->first_error = PCI_ERR_CAP_FEP(aercc);
|
||||
|
||||
if (tlp_header_logged(info->status, aercc)) {
|
||||
if (tlp_header_logged(info->status & ~info->mask, aercc)) {
|
||||
info->tlp_header_valid = 1;
|
||||
pcie_read_tlp_log(dev, aer + PCI_ERR_HEADER_LOG,
|
||||
aer + PCI_ERR_PREFIX_LOG,
|
||||
|
||||
Reference in New Issue
Block a user