On Wed, Dec 13, 2023 at 11:37:17PM -0700, Matthew W Carlis wrote: > Hello Any Interested > > Recently found that this patch had the affect of requiring us to set > pcie_ports_dpc_native in order to use the kernel DPC driver with PCIe switch > downstream ports. The kernel check for the DPC capability in portdrv.c has; > if pci_aer_available() and (dpc-native or using AER port service driver on > the device). I wonder if we couldn't do away with the requirement of the > AER service being used on the port if pci_aer_available() & host->native_aer > don't lie. I'm still trying to decide exactly what the condition ought to > look like, but it might draw from the AER service check above it. For example: > > if (pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC) && > - pci_aer_available() && > - (pcie_ports_dpc_native || (services & PCIE_PORT_SERVICE_AER))) > + dev->aer_cap && pci_aer_available() && > + (pcie_ports_dpc_native || host->native_aer)) > services |= PCIE_PORT_SERVICE_DPC; This sounds like it might be a regression report for d8d2b65a940b ("PCI/portdrv: Allow AER service only for Root Ports & RCECs"), which appeared in v6.2. Is that true? If d8d2b65a940b requires you to use the "pcie_ports=dpc-native" kernel parameter when you didn't need it before, that sounds like a regression. Looking at the code, that "services & PCIE_PORT_SERVICE_AER" definitely looks like a problem. We added that with https://git.kernel.org/linus/4e5fad429bd1 ("PCI/DPC: Do not enable DPC if AER control is not allowed by the BIOS"), but I think your suggestion of checking host->native_aer is better. Do you want to post a formal patch for it? Bjorn