]> www.infradead.org Git - users/hch/misc.git/commitdiff
PCI/AER: Support errors introduced by PCIe r6.0
authorLukas Wunner <lukas@wunner.de>
Wed, 27 Aug 2025 13:41:09 +0000 (15:41 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 27 Aug 2025 21:15:24 +0000 (16:15 -0500)
PCIe r6.0 defined five additional errors in the Uncorrectable Error
Status, Mask and Severity Registers (PCIe r7.0 sec 7.8.4.2ff).

lspci has been supporting them since commit 144b0911cc0b ("ls-ecaps:
extend decode support for more fields for AER CE and UE status"):

  https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git/commit/?id=144b0911cc0b

Amend the AER driver to recognize them as well, instead of logging them as
"Unknown Error Bit".

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/21f1875b18d4078c99353378f37dcd6b994f6d4e.1756301211.git.lukas@wunner.de
drivers/pci/pcie/aer.c

index e286c197d7167af3952e23a28006926d32f445e1..15ed541d2fbe49fd7e9b7c2bd71a612b97250a1b 100644 (file)
@@ -43,7 +43,7 @@
 #define AER_ERROR_SOURCES_MAX          128
 
 #define AER_MAX_TYPEOF_COR_ERRS                16      /* as per PCI_ERR_COR_STATUS */
-#define AER_MAX_TYPEOF_UNCOR_ERRS      27      /* as per PCI_ERR_UNCOR_STATUS*/
+#define AER_MAX_TYPEOF_UNCOR_ERRS      32      /* as per PCI_ERR_UNCOR_STATUS*/
 
 struct aer_err_source {
        u32 status;                     /* PCI_ERR_ROOT_STATUS */
@@ -525,11 +525,11 @@ static const char *aer_uncorrectable_error_string[] = {
        "AtomicOpBlocked",              /* Bit Position 24      */
        "TLPBlockedErr",                /* Bit Position 25      */
        "PoisonTLPBlocked",             /* Bit Position 26      */
-       NULL,                           /* Bit Position 27      */
-       NULL,                           /* Bit Position 28      */
-       NULL,                           /* Bit Position 29      */
-       NULL,                           /* Bit Position 30      */
-       NULL,                           /* Bit Position 31      */
+       "DMWrReqBlocked",               /* Bit Position 27      */
+       "IDECheck",                     /* Bit Position 28      */
+       "MisIDETLP",                    /* Bit Position 29      */
+       "PCRC_CHECK",                   /* Bit Position 30      */
+       "TLPXlatBlocked",               /* Bit Position 31      */
 };
 
 static const char *aer_agent_string[] = {