Re: [PATCH v6 1/4] PCI: Introduce pcim_alloc_irq_vectors()

Dejin Zheng
2021-06-07T14:25:03Z

On Mon, Jun 07, 2021 at 03:31:04AM +0800, kernel test robot wrote:
> Hi Dejin,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on pci/next]
> [also build test ERROR on wsa/i2c/for-next lwn/docs-next linus/master v5.13-rc4 next-20210604]
> [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]
>
> url: https://github.com/0day-ci/linux/commits/Dejin-Zheng/Introduce-pcim_alloc_irq_vectors/20210606-150730
> base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
> config: sparc-randconfig-c004-20210606 (attached as .config)
> compiler: sparc64-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/0day-ci/linux/commit/7b311110dce8729956f7545d1f11b2bbd60f6193
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review Dejin-Zheng/Introduce-pcim_alloc_irq_vectors/20210606-150730
> git checkout 7b311110dce8729956f7545d1f11b2bbd60f6193
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sparc
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> In file included from net/core/rtnetlink.c:37:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
> --

Thanks very much for Kernel test robot, I got the root cause of this build error.
I will send a new patch version for fix it.

The sparc defconfig disable PCI, so it can not found the CONFIG_PCI in pci.h,
and the pci_is_managed() function only exists in the pci.h when enable PCI.
so it will report builld this error when disable PCI.

BR,
Dejin
> In file included from arch/sparc/lib/iomap.c:5:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> --
> In file included from drivers/gpu/drm/drm_file.c:38:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> drivers/gpu/drm/drm_file.c: At top level:
> drivers/gpu/drm/drm_file.c:789:6: warning: no previous prototype for 'drm_send_event_helper' [-Wmissing-prototypes]
> 789 | void drm_send_event_helper(struct drm_device *dev,
> | ^~~~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
> --
> In file included from drivers/ide/ide-proc.c:25:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> At top level:
> drivers/ide/ide-proc.c:457:37: warning: 'ide_media_proc_fops' defined but not used [-Wunused-const-variable=]
> 457 | static const struct file_operations ide_media_proc_fops = {
> | ^~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
> --
> In file included from include/linux/ide.h:18,
> from drivers/ide/ide-cd_ioctl.c:13:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> drivers/ide/ide-cd_ioctl.c: In function 'ide_cdrom_select_speed':
> drivers/ide/ide-cd_ioctl.c:212:6: warning: variable 'stat' set but not used [-Wunused-but-set-variable]
> 212 | int stat;
> | ^~~~
> cc1: some warnings being treated as errors
> --
> In file included from drivers/ata/ahci.h:22,
> from drivers/ata/ahci_platform.c:21:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> In file included from drivers/ata/ahci_platform.c:21:
> drivers/ata/ahci_platform.c: At top level:
> drivers/ata/ahci.h:388:16: warning: initialized field overwritten [-Woverride-init]
> 388 | .can_queue = AHCI_MAX_CMDS, \
> | ^~~~~~~~~~~~~
> drivers/ata/ahci_platform.c:40:2: note: in expansion of macro 'AHCI_SHT'
> 40 | AHCI_SHT(DRV_NAME),
> | ^~~~~~~~
> drivers/ata/ahci.h:388:16: note: (near initialization for 'ahci_platform_sht.can_queue')
> 388 | .can_queue = AHCI_MAX_CMDS, \
> | ^~~~~~~~~~~~~
> drivers/ata/ahci_platform.c:40:2: note: in expansion of macro 'AHCI_SHT'
> 40 | AHCI_SHT(DRV_NAME),
> | ^~~~~~~~
> drivers/ata/ahci.h:392:17: warning: initialized field overwritten [-Woverride-init]
> 392 | .sdev_attrs = ahci_sdev_attrs
> | ^~~~~~~~~~~~~~~
> drivers/ata/ahci_platform.c:40:2: note: in expansion of macro 'AHCI_SHT'
> 40 | AHCI_SHT(DRV_NAME),
> | ^~~~~~~~
> drivers/ata/ahci.h:392:17: note: (near initialization for 'ahci_platform_sht.sdev_attrs')
> 392 | .sdev_attrs = ahci_sdev_attrs
> | ^~~~~~~~~~~~~~~
> drivers/ata/ahci_platform.c:40:2: note: in expansion of macro 'AHCI_SHT'
> 40 | AHCI_SHT(DRV_NAME),
> | ^~~~~~~~
> cc1: some warnings being treated as errors
> --
> In file included from drivers/usb/host/xhci.c:11:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
> drivers/usb/host/xhci.c: In function 'xhci_unmap_temp_buf':
> drivers/usb/host/xhci.c:1349:15: warning: variable 'len' set but not used [-Wunused-but-set-variable]
> 1349 | unsigned int len;
> | ^~~
> cc1: some warnings being treated as errors
>
> Kconfig warnings: (for reference only)
> WARNING: unmet direct dependencies detected for LOCKDEP
> Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
> Selected by
> - PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
> - DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
>
>
> vim +/pci_is_managed +1847 include/linux/pci.h
>
> 1827
> 1828 /**
> 1829 * pcim_alloc_irq_vectors - a device-managed pci_alloc_irq_vectors()
> 1830 * @dev: PCI device to operate on
> 1831 * @min_vecs: minimum number of vectors required (must be >= 1)
> 1832 * @max_vecs: maximum (desired) number of vectors
> 1833 * @flags: flags or quirks for the allocation
> 1834 *
> 1835 * Return the number of vectors allocated, (which might be smaller than
> 1836 * @max_vecs) if successful, or a negative error code on error. If less
> 1837 * than @min_vecs interrupt vectors are available for @dev the function
> 1838 * will fail with -ENOSPC.
> 1839 *
> 1840 * It depends on calling pcim_enable_device() to make IRQ resources
> 1841 * manageable.
> 1842 */
> 1843 static inline int
> 1844 pcim_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
> 1845 unsigned int max_vecs, unsigned int flags)
> 1846 {
> > 1847 if (!pci_is_managed(dev))
> 1848 return -EINVAL;
> 1849 return pci_alloc_irq_vectors(dev, min_vecs, max_vecs, flags);
> 1850 }
> 1851
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org