Messages in this thread Patch in this message |  | | From | Daniel Walker <> | | Subject | [PATCH-RFC] drivers: pci: pcieport: Allow AER service only on root ports | | Date | Thu, 7 Oct 2021 12:44:09 -0700 |
| |
From: Suneel Garapati <sgarapati@marvell.com>
Some AER interrupt capability registers may not be present on non Root ports. Since there is no way to check presence of ROOT_ERR_COMMAND and ROOT_ERR_STATUS registers. Allow AER service only on root ports. Otherwise AER interrupt message number is read incorrectly causing MSIX vector registration to fail and fallback to legacy unnecessarily.
Signed-off-by: Suneel Garapati <sgarapati@marvell.com> Reviewed-by: Chandrakala Chavva <cchavva@marvell.com> Reviewed-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> --- drivers/pci/pcie/portdrv_core.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c index 3ee63968deaa..edc355971a32 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c @@ -221,7 +221,16 @@ static int get_port_device_capability(struct pci_dev *dev) } #ifdef CONFIG_PCIEAER + /* + * Some AER interrupt capability registers may not be present on + * non Root ports. Since there is no way to check presence of + * ROOT_ERR_COMMAND and ROOT_ERR_STATUS registers. Allow AER + * service only on root ports. Refer PCIe rev5.0 spec v1.0 7.8.4. + * Otherwise AER interrupt message number is read incorrectly + * causing MSIX vector registration to fail and fallback to legacy. + */ if (dev->aer_cap && pci_aer_available() && + pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT && (pcie_ports_native || host->native_aer)) { services |= PCIE_PORT_SERVICE_AER; -- 2.25.1
|  |