Re: [PATCH 1/1] PCI/portdrv: Allow DPC if the OS controls AER natively.

kernel test robot
2023-12-25T20:37:28Z

Hi Matthew,

kernel test robot noticed the following build errors:

[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus linus/master v6.7-rc7 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Matthew-W-Carlis/PCI-portdrv-Allow-DPC-if-the-OS-controls-AER-natively/20231225-154046
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20231223212235.34293-2-mattc%40purestorage.com
patch subject: [PATCH 1/1] PCI/portdrv: Allow DPC if the OS controls AER natively.
config: arm-defconfig (https://download.01.org/0day-ci/archive/20231226/202312260431.ZXppQZ1I-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231226/202312260431.ZXppQZ1I-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312260431.ZXppQZ1I-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/pci/pcie/portdrv.c:272:12: error: no member named 'aer_cap' in 'struct pci_dev'; did you mean 'acs_cap'?
(dev->aer_cap && host->native_aer)))
^~~~~~~
acs_cap
include/linux/pci.h:519:7: note: 'acs_cap' declared here
u16 acs_cap; /* ACS Capability offset */
^
1 error generated.

vim +272 drivers/pci/pcie/portdrv.c

244
245 /* Root Ports and Root Complex Event Collectors may generate PMEs */
246 if ((pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
247 pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) &&
248 (pcie_ports_native || host->native_pme)) {
249 services |= PCIE_PORT_SERVICE_PME;
250
251 /*
252 * Disable PME interrupt on this port in case it's been enabled
253 * by the BIOS (the PME service driver will enable it when
254 * necessary).
255 */
256 pcie_pme_interrupt_enable(dev, false);
257 }
258
259 /*
260 * _OSC AER Control is required by the OS & requires OS to control AER,
261 * but _OSC DPC Control isn't required by the OS to control DPC; however
262 * it does require the OS to control DPC. _OSC DPC Control also requres
263 * _OSC EDR Control (Error Disconnect Recovery) (PCI Firmware - DPC ECN rev3.2)
264 * PCI_Express_Base 6.1, 6.2.11 Determination of DPC Control recommends
265 * platform fw or OS always link control of DPC to AER.
266 *
267 * With dpc-native, allow Linux to use DPC even if it doesn't have
268 * permission to use AER.
269 */
270 if (pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC) &&
271 pci_aer_available() && (pcie_ports_dpc_native ||
> 272 (dev->aer_cap && host->native_aer)))
273 services |= PCIE_PORT_SERVICE_DPC;
274
275 if (pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM ||
276 pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
277 u32 linkcap;
278
279 pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &linkcap);
280 if (linkcap & PCI_EXP_LNKCAP_LBNC)
281 services |= PCIE_PORT_SERVICE_BWNOTIF;
282 }
283
284 return services;
285 }
286

--
0-DAY CI Kernel Test Service