Re: [PATCH v5 1/4] PCI: Introduce pci_dev_for_each_resource()
Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on pci/next] [also build test ERROR on pci/for-linus powerpc/next powerpc/fixes linus/master v6.3-rc2 next-20230316] [cannot apply to soc/for-next] [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/Andy-Shevchenko/PCI-Introduce-pci_dev_for_each_resource/20230315-032821 base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next patch link: https://lore.kernel.org/r/20230314192634.63531-2-andriy.shevchenko%40linux.intel.com patch subject: [PATCH v5 1/4] PCI: Introduce pci_dev_for_each_resource() config: powerpc-randconfig-r032-20230312 (https://download.01.org/0day-ci/archive/20230317/202303170223.v0xqhs1v-...@intel.com/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7) 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 # install powerpc cross compiling tool for clang build # apt-get install binutils-powerpc-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/85cdf4746b716f7b6c14d7dc5cd907c3c2a1fb0c git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/PCI-Introduce-pci_dev_for_each_resource/20230315-032821 git checkout 85cdf4746b716f7b6c14d7dc5cd907c3c2a1fb0c # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot | Link: https://lore.kernel.org/oe-kbuild-all/202303170223.v0xqhs1v-...@intel.com/ All errors (new ones prefixed by >>): >> arch/powerpc/platforms/52xx/mpc52xx_pci.c:331:6: error: unused variable 'i' >> [-Werror,-Wunused-variable] int i; ^ 1 error generated. vim +/i +331 arch/powerpc/platforms/52xx/mpc52xx_pci.c f42963f8646540 Grant Likely2006-12-12 326 f42963f8646540 Grant Likely2006-12-12 327 static void f42963f8646540 Grant Likely2006-12-12 328 mpc52xx_pci_fixup_resources(struct pci_dev *dev) f42963f8646540 Grant Likely2006-12-12 329 { 85cdf4746b716f Mika Westerberg 2023-03-14 330 struct resource *res; f42963f8646540 Grant Likely2006-12-12 @331 int i; f42963f8646540 Grant Likely2006-12-12 332 59510820fff76f Randy Dunlap2021-04-28 333 pr_debug("%s() %.4x:%.4x\n", __func__, dev->vendor, dev->device); f42963f8646540 Grant Likely2006-12-12 334 f42963f8646540 Grant Likely2006-12-12 335 /* We don't rely on boot loader for PCI and resets all f42963f8646540 Grant Likely2006-12-12 336 devices */ 85cdf4746b716f Mika Westerberg 2023-03-14 337 pci_dev_for_each_resource_p(dev, res) { f42963f8646540 Grant Likely2006-12-12 338 if (res->end > res->start) {/* Only valid resources */ f42963f8646540 Grant Likely2006-12-12 339 res->end -= res->start; f42963f8646540 Grant Likely2006-12-12 340 res->start = 0; f42963f8646540 Grant Likely2006-12-12 341 res->flags |= IORESOURCE_UNSET; f42963f8646540 Grant Likely2006-12-12 342 } f42963f8646540 Grant Likely2006-12-12 343 } f42963f8646540 Grant Likely2006-12-12 344 f42963f8646540 Grant Likely2006-12-12 345 /* The PCI Host bridge of MPC52xx has a prefetch memory resource f42963f8646540 Grant Likely2006-12-12 346 fixed to 1Gb. Doesn't fit in the resource system so we remove it */ f42963f8646540 Grant Likely2006-12-12 347 if ( (dev->vendor == PCI_VENDOR_ID_MOTOROLA) && f42963f8646540 Grant Likely2006-12-12 348 ( dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200 f42963f8646540 Grant Likely2006-12-12 349|| dev->device == PCI_DEVICE_ID_MOTOROLA_MPC5200B) ) { f42963f8646540 Grant Likely2006-12-12 350 struct resource *res = >resource[1]; f42963f8646540 Grant Likely2006-12-12 351 res->start = res->end = res->flags = 0; f42963f8646540 Grant Likely2006-12-12 352 } f42963f8646540 Grant Likely2006-12-12 353 } f42963f8646540 Grant Likely2006-12-12 354 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests
[PATCH v5 1/4] PCI: Introduce pci_dev_for_each_resource()
From: Mika Westerberg Instead of open-coding it everywhere introduce a tiny helper that can be used to iterate over each resource of a PCI device, and convert the most obvious users into it. While at it drop doubled empty line before pdev_sort_resources(). No functional changes intended. Suggested-by: Andy Shevchenko Signed-off-by: Mika Westerberg Signed-off-by: Andy Shevchenko Reviewed-by: Krzysztof WilczyĆski --- .clang-format | 2 ++ arch/alpha/kernel/pci.c | 5 ++-- arch/arm/kernel/bios32.c | 16 ++--- arch/arm/mach-dove/pcie.c | 10 arch/arm/mach-mv78xx0/pcie.c | 10 arch/arm/mach-orion5x/pci.c | 10 arch/mips/pci/ops-bcm63xx.c | 8 +++ arch/mips/pci/pci-legacy.c| 3 +-- arch/powerpc/kernel/pci-common.c | 21 arch/powerpc/platforms/4xx/pci.c | 8 +++ arch/powerpc/platforms/52xx/mpc52xx_pci.c | 4 ++-- arch/powerpc/platforms/pseries/pci.c | 16 ++--- arch/sh/drivers/pci/pcie-sh7786.c | 10 arch/sparc/kernel/leon_pci.c | 5 ++-- arch/sparc/kernel/pci.c | 10 arch/sparc/kernel/pcic.c | 5 ++-- drivers/pci/remove.c | 5 ++-- drivers/pci/setup-bus.c | 27 - drivers/pci/setup-res.c | 4 +--- drivers/pci/vgaarb.c | 17 - drivers/pci/xen-pcifront.c| 4 +--- drivers/pnp/quirks.c | 29 --- include/linux/pci.h | 15 ++-- 23 files changed, 111 insertions(+), 133 deletions(-) diff --git a/.clang-format b/.clang-format index d988e9fa9b26..266abb843654 100644 --- a/.clang-format +++ b/.clang-format @@ -520,6 +520,8 @@ ForEachMacros: - 'of_property_for_each_string' - 'of_property_for_each_u32' - 'pci_bus_for_each_resource' + - 'pci_dev_for_each_resource' + - 'pci_dev_for_each_resource_p' - 'pci_doe_for_each_off' - 'pcl_for_each_chunk' - 'pcl_for_each_segment' diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index 64fbfb0763b2..4458eb7f44f0 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c @@ -288,11 +288,10 @@ pcibios_claim_one_bus(struct pci_bus *b) struct pci_bus *child_bus; list_for_each_entry(dev, >devices, bus_list) { + struct resource *r; int i; - for (i = 0; i < PCI_NUM_RESOURCES; i++) { - struct resource *r = >resource[i]; - + pci_dev_for_each_resource(dev, r, i) { if (r->parent || !r->start || !r->flags) continue; if (pci_has_flag(PCI_PROBE_ONLY) || diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index e7ef2b5bea9c..5254734b23e6 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c @@ -142,15 +142,15 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940F, */ static void pci_fixup_dec21285(struct pci_dev *dev) { - int i; - if (dev->devfn == 0) { + struct resource *r; + dev->class &= 0xff; dev->class |= PCI_CLASS_BRIDGE_HOST << 8; - for (i = 0; i < PCI_NUM_RESOURCES; i++) { - dev->resource[i].start = 0; - dev->resource[i].end = 0; - dev->resource[i].flags = 0; + pci_dev_for_each_resource_p(dev, r) { + r->start = 0; + r->end = 0; + r->flags = 0; } } } @@ -162,13 +162,11 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_d static void pci_fixup_ide_bases(struct pci_dev *dev) { struct resource *r; - int i; if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE) return; - for (i = 0; i < PCI_NUM_RESOURCES; i++) { - r = dev->resource + i; + pci_dev_for_each_resource_p(dev, r) { if ((r->start & ~0x80) == 0x374) { r->start |= 2; r->end = r->start; diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c index 754ca381f600..58cecd79a204 100644 --- a/arch/arm/mach-dove/pcie.c +++ b/arch/arm/mach-dove/pcie.c @@ -142,14 +142,14 @@ static struct pci_ops pcie_ops = { static void rc_pci_fixup(struct pci_dev *dev) { if (dev->bus->parent == NULL && dev->devfn == 0) { - int i; + struct resource *r; dev->class &= 0xff; dev->class |= PCI_CLASS_BRIDGE_HOST << 8; - for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { -