Re: [PATCH v2 2/4] PCI: Move jailhouse's isolated function handling to pci_scan_slot()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Niklas,

I love your patch! Perhaps something to improve:

[auto build test WARNING on helgaas-pci/next]
[also build test WARNING on s390/features tip/x86/core v5.18-rc2 next-20220412]
[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/intel-lab-lkp/linux/commits/Niklas-Schnelle/PCI-Rework-pci_scan_slot-and-isolated-PCI-functions/20220412-223307
base:   https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
config: alpha-defconfig (https://download.01.org/0day-ci/archive/20220413/202204130045.AeSigvk8-lkp@xxxxxxxxx/config)
compiler: alpha-linux-gcc (GCC) 11.2.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/intel-lab-lkp/linux/commit/5cac6729750b7434ff5d6ae99469e9e54bc9fb6e
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Niklas-Schnelle/PCI-Rework-pci_scan_slot-and-isolated-PCI-functions/20220412-223307
        git checkout 5cac6729750b7434ff5d6ae99469e9e54bc9fb6e
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=alpha SHELL=/bin/bash drivers/pci/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   drivers/pci/probe.c: In function 'pci_scan_child_bus_extend':
>> drivers/pci/probe.c:2861:13: warning: variable 'nr_devs' set but not used [-Wunused-but-set-variable]
    2861 |         int nr_devs;
         |             ^~~~~~~


vim +/nr_devs +2861 drivers/pci/probe.c

bccf90d6e063d2 Palmer Dabbelt  2017-06-23  2841  
1c02ea81006548 Mika Westerberg 2017-10-13  2842  /**
1c02ea81006548 Mika Westerberg 2017-10-13  2843   * pci_scan_child_bus_extend() - Scan devices below a bus
1c02ea81006548 Mika Westerberg 2017-10-13  2844   * @bus: Bus to scan for devices
1c02ea81006548 Mika Westerberg 2017-10-13  2845   * @available_buses: Total number of buses available (%0 does not try to
1c02ea81006548 Mika Westerberg 2017-10-13  2846   *		     extend beyond the minimal)
1c02ea81006548 Mika Westerberg 2017-10-13  2847   *
1c02ea81006548 Mika Westerberg 2017-10-13  2848   * Scans devices below @bus including subordinate buses. Returns new
1c02ea81006548 Mika Westerberg 2017-10-13  2849   * subordinate number including all the found devices. Passing
1c02ea81006548 Mika Westerberg 2017-10-13  2850   * @available_buses causes the remaining bus space to be distributed
1c02ea81006548 Mika Westerberg 2017-10-13  2851   * equally between hotplug-capable bridges to allow future extension of the
1c02ea81006548 Mika Westerberg 2017-10-13  2852   * hierarchy.
1c02ea81006548 Mika Westerberg 2017-10-13  2853   */
1c02ea81006548 Mika Westerberg 2017-10-13  2854  static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
1c02ea81006548 Mika Westerberg 2017-10-13  2855  					      unsigned int available_buses)
1c02ea81006548 Mika Westerberg 2017-10-13  2856  {
1c02ea81006548 Mika Westerberg 2017-10-13  2857  	unsigned int used_buses, normal_bridges = 0, hotplug_bridges = 0;
1c02ea81006548 Mika Westerberg 2017-10-13  2858  	unsigned int start = bus->busn_res.start;
5cac6729750b74 Niklas Schnelle 2022-04-12  2859  	unsigned int devfn, cmax, max = start;
^1da177e4c3f41 Linus Torvalds  2005-04-16  2860  	struct pci_dev *dev;
690f4304104f37 Jan Kiszka      2018-03-07 @2861  	int nr_devs;
^1da177e4c3f41 Linus Torvalds  2005-04-16  2862  
0207c356ef0e2b Bjorn Helgaas   2009-11-04  2863  	dev_dbg(&bus->dev, "scanning bus\n");
^1da177e4c3f41 Linus Torvalds  2005-04-16  2864  
^1da177e4c3f41 Linus Torvalds  2005-04-16  2865  	/* Go find them, Rover! */
5cac6729750b74 Niklas Schnelle 2022-04-12  2866  	for (devfn = 0; devfn < 256; devfn += 8)
690f4304104f37 Jan Kiszka      2018-03-07  2867  		nr_devs = pci_scan_slot(bus, devfn);
690f4304104f37 Jan Kiszka      2018-03-07  2868  
3e466e2d3a04c7 Bjorn Helgaas   2017-11-30  2869  	/* Reserve buses for SR-IOV capability */
1c02ea81006548 Mika Westerberg 2017-10-13  2870  	used_buses = pci_iov_bus_range(bus);
1c02ea81006548 Mika Westerberg 2017-10-13  2871  	max += used_buses;
a28724b0fb909d Yu Zhao         2009-03-20  2872  
^1da177e4c3f41 Linus Torvalds  2005-04-16  2873  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  2874  	 * After performing arch-dependent fixup of the bus, look behind
^1da177e4c3f41 Linus Torvalds  2005-04-16  2875  	 * all PCI-to-PCI bridges on this bus.
^1da177e4c3f41 Linus Torvalds  2005-04-16  2876  	 */
74710ded8e16fc Alex Chiang     2009-03-20  2877  	if (!bus->is_added) {
0207c356ef0e2b Bjorn Helgaas   2009-11-04  2878  		dev_dbg(&bus->dev, "fixups for bus\n");
^1da177e4c3f41 Linus Torvalds  2005-04-16  2879  		pcibios_fixup_bus(bus);
74710ded8e16fc Alex Chiang     2009-03-20  2880  		bus->is_added = 1;
74710ded8e16fc Alex Chiang     2009-03-20  2881  	}
74710ded8e16fc Alex Chiang     2009-03-20  2882  
1c02ea81006548 Mika Westerberg 2017-10-13  2883  	/*
1c02ea81006548 Mika Westerberg 2017-10-13  2884  	 * Calculate how many hotplug bridges and normal bridges there
1c02ea81006548 Mika Westerberg 2017-10-13  2885  	 * are on this bus. We will distribute the additional available
1c02ea81006548 Mika Westerberg 2017-10-13  2886  	 * buses between hotplug bridges.
1c02ea81006548 Mika Westerberg 2017-10-13  2887  	 */
1c02ea81006548 Mika Westerberg 2017-10-13  2888  	for_each_pci_bridge(dev, bus) {
1c02ea81006548 Mika Westerberg 2017-10-13  2889  		if (dev->is_hotplug_bridge)
1c02ea81006548 Mika Westerberg 2017-10-13  2890  			hotplug_bridges++;
1c02ea81006548 Mika Westerberg 2017-10-13  2891  		else
1c02ea81006548 Mika Westerberg 2017-10-13  2892  			normal_bridges++;
1c02ea81006548 Mika Westerberg 2017-10-13  2893  	}
1c02ea81006548 Mika Westerberg 2017-10-13  2894  
4147c2fd9b12ae Mika Westerberg 2017-10-13  2895  	/*
4147c2fd9b12ae Mika Westerberg 2017-10-13  2896  	 * Scan bridges that are already configured. We don't touch them
4147c2fd9b12ae Mika Westerberg 2017-10-13  2897  	 * unless they are misconfigured (which will be done in the second
4147c2fd9b12ae Mika Westerberg 2017-10-13  2898  	 * scan below).
4147c2fd9b12ae Mika Westerberg 2017-10-13  2899  	 */
1c02ea81006548 Mika Westerberg 2017-10-13  2900  	for_each_pci_bridge(dev, bus) {
1c02ea81006548 Mika Westerberg 2017-10-13  2901  		cmax = max;
1c02ea81006548 Mika Westerberg 2017-10-13  2902  		max = pci_scan_bridge_extend(bus, dev, max, 0, 0);
3374c545c27c53 Mika Westerberg 2018-05-28  2903  
3374c545c27c53 Mika Westerberg 2018-05-28  2904  		/*
3374c545c27c53 Mika Westerberg 2018-05-28  2905  		 * Reserve one bus for each bridge now to avoid extending
3374c545c27c53 Mika Westerberg 2018-05-28  2906  		 * hotplug bridges too much during the second scan below.
3374c545c27c53 Mika Westerberg 2018-05-28  2907  		 */
3374c545c27c53 Mika Westerberg 2018-05-28  2908  		used_buses++;
3374c545c27c53 Mika Westerberg 2018-05-28  2909  		if (cmax - max > 1)
3374c545c27c53 Mika Westerberg 2018-05-28  2910  			used_buses += cmax - max - 1;
1c02ea81006548 Mika Westerberg 2017-10-13  2911  	}
4147c2fd9b12ae Mika Westerberg 2017-10-13  2912  
4147c2fd9b12ae Mika Westerberg 2017-10-13  2913  	/* Scan bridges that need to be reconfigured */
1c02ea81006548 Mika Westerberg 2017-10-13  2914  	for_each_pci_bridge(dev, bus) {
1c02ea81006548 Mika Westerberg 2017-10-13  2915  		unsigned int buses = 0;
1c02ea81006548 Mika Westerberg 2017-10-13  2916  
1c02ea81006548 Mika Westerberg 2017-10-13  2917  		if (!hotplug_bridges && normal_bridges == 1) {
3e466e2d3a04c7 Bjorn Helgaas   2017-11-30  2918  
1c02ea81006548 Mika Westerberg 2017-10-13  2919  			/*
1c02ea81006548 Mika Westerberg 2017-10-13  2920  			 * There is only one bridge on the bus (upstream
1c02ea81006548 Mika Westerberg 2017-10-13  2921  			 * port) so it gets all available buses which it
1c02ea81006548 Mika Westerberg 2017-10-13  2922  			 * can then distribute to the possible hotplug
1c02ea81006548 Mika Westerberg 2017-10-13  2923  			 * bridges below.
1c02ea81006548 Mika Westerberg 2017-10-13  2924  			 */
1c02ea81006548 Mika Westerberg 2017-10-13  2925  			buses = available_buses;
1c02ea81006548 Mika Westerberg 2017-10-13  2926  		} else if (dev->is_hotplug_bridge) {
3e466e2d3a04c7 Bjorn Helgaas   2017-11-30  2927  
1c02ea81006548 Mika Westerberg 2017-10-13  2928  			/*
1c02ea81006548 Mika Westerberg 2017-10-13  2929  			 * Distribute the extra buses between hotplug
1c02ea81006548 Mika Westerberg 2017-10-13  2930  			 * bridges if any.
1c02ea81006548 Mika Westerberg 2017-10-13  2931  			 */
1c02ea81006548 Mika Westerberg 2017-10-13  2932  			buses = available_buses / hotplug_bridges;
3374c545c27c53 Mika Westerberg 2018-05-28  2933  			buses = min(buses, available_buses - used_buses + 1);
1c02ea81006548 Mika Westerberg 2017-10-13  2934  		}
1c02ea81006548 Mika Westerberg 2017-10-13  2935  
1c02ea81006548 Mika Westerberg 2017-10-13  2936  		cmax = max;
1c02ea81006548 Mika Westerberg 2017-10-13  2937  		max = pci_scan_bridge_extend(bus, dev, cmax, buses, 1);
3374c545c27c53 Mika Westerberg 2018-05-28  2938  		/* One bus is already accounted so don't add it again */
3374c545c27c53 Mika Westerberg 2018-05-28  2939  		if (max - cmax > 1)
3374c545c27c53 Mika Westerberg 2018-05-28  2940  			used_buses += max - cmax - 1;
1c02ea81006548 Mika Westerberg 2017-10-13  2941  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  2942  
e16b46605960bd Keith Busch     2016-07-21  2943  	/*
e16b46605960bd Keith Busch     2016-07-21  2944  	 * Make sure a hotplug bridge has at least the minimum requested
1c02ea81006548 Mika Westerberg 2017-10-13  2945  	 * number of buses but allow it to grow up to the maximum available
1c02ea81006548 Mika Westerberg 2017-10-13  2946  	 * bus number of there is room.
e16b46605960bd Keith Busch     2016-07-21  2947  	 */
1c02ea81006548 Mika Westerberg 2017-10-13  2948  	if (bus->self && bus->self->is_hotplug_bridge) {
1c02ea81006548 Mika Westerberg 2017-10-13  2949  		used_buses = max_t(unsigned int, available_buses,
1c02ea81006548 Mika Westerberg 2017-10-13  2950  				   pci_hotplug_bus_size - 1);
1c02ea81006548 Mika Westerberg 2017-10-13  2951  		if (max - start < used_buses) {
1c02ea81006548 Mika Westerberg 2017-10-13  2952  			max = start + used_buses;
a20c7f36bd3d20 Mika Westerberg 2017-10-13  2953  
a20c7f36bd3d20 Mika Westerberg 2017-10-13  2954  			/* Do not allocate more buses than we have room left */
a20c7f36bd3d20 Mika Westerberg 2017-10-13  2955  			if (max > bus->busn_res.end)
a20c7f36bd3d20 Mika Westerberg 2017-10-13  2956  				max = bus->busn_res.end;
1c02ea81006548 Mika Westerberg 2017-10-13  2957  
1c02ea81006548 Mika Westerberg 2017-10-13  2958  			dev_dbg(&bus->dev, "%pR extended by %#02x\n",
1c02ea81006548 Mika Westerberg 2017-10-13  2959  				&bus->busn_res, max - start);
1c02ea81006548 Mika Westerberg 2017-10-13  2960  		}
e16b46605960bd Keith Busch     2016-07-21  2961  	}
e16b46605960bd Keith Busch     2016-07-21  2962  
^1da177e4c3f41 Linus Torvalds  2005-04-16  2963  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  2964  	 * We've scanned the bus and so we know all about what's on
^1da177e4c3f41 Linus Torvalds  2005-04-16  2965  	 * the other side of any bridges that may be on this bus plus
^1da177e4c3f41 Linus Torvalds  2005-04-16  2966  	 * any devices.
^1da177e4c3f41 Linus Torvalds  2005-04-16  2967  	 *
^1da177e4c3f41 Linus Torvalds  2005-04-16  2968  	 * Return how far we've got finding sub-buses.
^1da177e4c3f41 Linus Torvalds  2005-04-16  2969  	 */
0207c356ef0e2b Bjorn Helgaas   2009-11-04  2970  	dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
^1da177e4c3f41 Linus Torvalds  2005-04-16  2971  	return max;
^1da177e4c3f41 Linus Torvalds  2005-04-16  2972  }
1c02ea81006548 Mika Westerberg 2017-10-13  2973  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux