Skip to content

Commit 6dc5fe2

Browse files
ktbowmandavejiang
authored andcommitted
PCI/AER: Export pci_aer_unmask_internal_errors()
Internal PCIe errors are not enabled by default during initialization because their behavior is too device-specific and there is no standard way to reason about them. However, for CXL an internal error is the standard mechanism for conveying CXL protocol errors. Export pci_aer_unmask_internal_errors() for CXL, but make it clear that they are only meant for CXL and the status quo for leaving them masked for PCIe in general remains. Signed-off-by: Terry Bowman <terry.bowman@amd.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Link: https://patch.msgid.link/20260114182055.46029-10-terry.bowman@amd.com Co-developed-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent 0ff60f2 commit 6dc5fe2

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

drivers/pci/pcie/aer.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,8 +1120,6 @@ static bool find_source_device(struct pci_dev *parent,
11201120
return true;
11211121
}
11221122

1123-
#ifdef CONFIG_PCIEAER_CXL
1124-
11251123
/**
11261124
* pci_aer_unmask_internal_errors - unmask internal errors
11271125
* @dev: pointer to the pci_dev data structure
@@ -1132,7 +1130,7 @@ static bool find_source_device(struct pci_dev *parent,
11321130
* Note: AER must be enabled and supported by the device which must be
11331131
* checked in advance, e.g. with pcie_aer_is_native().
11341132
*/
1135-
static void pci_aer_unmask_internal_errors(struct pci_dev *dev)
1133+
void pci_aer_unmask_internal_errors(struct pci_dev *dev)
11361134
{
11371135
int aer = dev->aer_cap;
11381136
u32 mask;
@@ -1146,6 +1144,13 @@ static void pci_aer_unmask_internal_errors(struct pci_dev *dev)
11461144
pci_write_config_dword(dev, aer + PCI_ERR_COR_MASK, mask);
11471145
}
11481146

1147+
/*
1148+
* Internal errors are too device-specific to enable generally, however for CXL
1149+
* their behavior is standardized for conveying CXL protocol errors.
1150+
*/
1151+
EXPORT_SYMBOL_FOR_MODULES(pci_aer_unmask_internal_errors, "cxl_core");
1152+
1153+
#ifdef CONFIG_PCIEAER_CXL
11491154
static bool is_cxl_mem_dev(struct pci_dev *dev)
11501155
{
11511156
/*

include/linux/aer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ struct aer_capability_regs {
5656
#if defined(CONFIG_PCIEAER)
5757
int pci_aer_clear_nonfatal_status(struct pci_dev *dev);
5858
int pcie_aer_is_native(struct pci_dev *dev);
59+
void pci_aer_unmask_internal_errors(struct pci_dev *dev);
5960
#else
6061
static inline int pci_aer_clear_nonfatal_status(struct pci_dev *dev)
6162
{
6263
return -EINVAL;
6364
}
6465
static inline int pcie_aer_is_native(struct pci_dev *dev) { return 0; }
66+
static inline void pci_aer_unmask_internal_errors(struct pci_dev *dev) { }
6567
#endif
6668

6769
void pci_print_aer(struct pci_dev *dev, int aer_severity,

0 commit comments

Comments
 (0)