Message ID | 20210606070511.778487-2-zhengdejin5@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | Introduce pcim_alloc_irq_vectors() | expand |
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 -- 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
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
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index b717680377a9..6319e5889688 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -1989,10 +1989,7 @@ static void pcim_release(struct device *gendev, void *res) struct pci_devres *this = res; int i; - if (dev->msi_enabled) - pci_disable_msi(dev); - if (dev->msix_enabled) - pci_disable_msix(dev); + pci_free_irq_vectors(dev); for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) if (this->region_mask & (1 << i)) diff --git a/include/linux/pci.h b/include/linux/pci.h index c20211e59a57..e9c95cab2540 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1825,6 +1825,30 @@ pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, NULL); } +/** + * pcim_alloc_irq_vectors - a device-managed pci_alloc_irq_vectors() + * @dev: PCI device to operate on + * @min_vecs: minimum number of vectors required (must be >= 1) + * @max_vecs: maximum (desired) number of vectors + * @flags: flags or quirks for the allocation + * + * Return the number of vectors allocated, (which might be smaller than + * @max_vecs) if successful, or a negative error code on error. If less + * than @min_vecs interrupt vectors are available for @dev the function + * will fail with -ENOSPC. + * + * It depends on calling pcim_enable_device() to make IRQ resources + * manageable. + */ +static inline int +pcim_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, + unsigned int max_vecs, unsigned int flags) +{ + if (!pci_is_managed(dev)) + return -EINVAL; + return pci_alloc_irq_vectors(dev, min_vecs, max_vecs, flags); +} + /* Include architecture-dependent settings and functions */ #include <asm/pci.h>