1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * PCI detection and setup code
4   */
5  
6  #include <linux/kernel.h>
7  #include <linux/delay.h>
8  #include <linux/init.h>
9  #include <linux/pci.h>
10  #include <linux/msi.h>
11  #include <linux/of_pci.h>
12  #include <linux/pci_hotplug.h>
13  #include <linux/slab.h>
14  #include <linux/module.h>
15  #include <linux/cpumask.h>
16  #include <linux/aer.h>
17  #include <linux/acpi.h>
18  #include <linux/hypervisor.h>
19  #include <linux/irqdomain.h>
20  #include <linux/pm_runtime.h>
21  #include <linux/bitfield.h>
22  #include "pci.h"
23  
24  #define CARDBUS_LATENCY_TIMER	176	/* secondary latency timer */
25  #define CARDBUS_RESERVE_BUSNR	3
26  
27  static struct resource busn_resource = {
28  	.name	= "PCI busn",
29  	.start	= 0,
30  	.end	= 255,
31  	.flags	= IORESOURCE_BUS,
32  };
33  
34  /* Ugh.  Need to stop exporting this to modules. */
35  LIST_HEAD(pci_root_buses);
36  EXPORT_SYMBOL(pci_root_buses);
37  
38  static LIST_HEAD(pci_domain_busn_res_list);
39  
40  struct pci_domain_busn_res {
41  	struct list_head list;
42  	struct resource res;
43  	int domain_nr;
44  };
45  
get_pci_domain_busn_res(int domain_nr)46  static struct resource *get_pci_domain_busn_res(int domain_nr)
47  {
48  	struct pci_domain_busn_res *r;
49  
50  	list_for_each_entry(r, &pci_domain_busn_res_list, list)
51  		if (r->domain_nr == domain_nr)
52  			return &r->res;
53  
54  	r = kzalloc(sizeof(*r), GFP_KERNEL);
55  	if (!r)
56  		return NULL;
57  
58  	r->domain_nr = domain_nr;
59  	r->res.start = 0;
60  	r->res.end = 0xff;
61  	r->res.flags = IORESOURCE_BUS | IORESOURCE_PCI_FIXED;
62  
63  	list_add_tail(&r->list, &pci_domain_busn_res_list);
64  
65  	return &r->res;
66  }
67  
68  /*
69   * Some device drivers need know if PCI is initiated.
70   * Basically, we think PCI is not initiated when there
71   * is no device to be found on the pci_bus_type.
72   */
no_pci_devices(void)73  int no_pci_devices(void)
74  {
75  	struct device *dev;
76  	int no_devices;
77  
78  	dev = bus_find_next_device(&pci_bus_type, NULL);
79  	no_devices = (dev == NULL);
80  	put_device(dev);
81  	return no_devices;
82  }
83  EXPORT_SYMBOL(no_pci_devices);
84  
85  /*
86   * PCI Bus Class
87   */
release_pcibus_dev(struct device * dev)88  static void release_pcibus_dev(struct device *dev)
89  {
90  	struct pci_bus *pci_bus = to_pci_bus(dev);
91  
92  	put_device(pci_bus->bridge);
93  	pci_bus_remove_resources(pci_bus);
94  	pci_release_bus_of_node(pci_bus);
95  	kfree(pci_bus);
96  }
97  
98  static const struct class pcibus_class = {
99  	.name		= "pci_bus",
100  	.dev_release	= &release_pcibus_dev,
101  	.dev_groups	= pcibus_groups,
102  };
103  
pcibus_class_init(void)104  static int __init pcibus_class_init(void)
105  {
106  	return class_register(&pcibus_class);
107  }
108  postcore_initcall(pcibus_class_init);
109  
pci_size(u64 base,u64 maxbase,u64 mask)110  static u64 pci_size(u64 base, u64 maxbase, u64 mask)
111  {
112  	u64 size = mask & maxbase;	/* Find the significant bits */
113  	if (!size)
114  		return 0;
115  
116  	/*
117  	 * Get the lowest of them to find the decode size, and from that
118  	 * the extent.
119  	 */
120  	size = size & ~(size-1);
121  
122  	/*
123  	 * base == maxbase can be valid only if the BAR has already been
124  	 * programmed with all 1s.
125  	 */
126  	if (base == maxbase && ((base | (size - 1)) & mask) != mask)
127  		return 0;
128  
129  	return size;
130  }
131  
decode_bar(struct pci_dev * dev,u32 bar)132  static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
133  {
134  	u32 mem_type;
135  	unsigned long flags;
136  
137  	if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
138  		flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
139  		flags |= IORESOURCE_IO;
140  		return flags;
141  	}
142  
143  	flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
144  	flags |= IORESOURCE_MEM;
145  	if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
146  		flags |= IORESOURCE_PREFETCH;
147  
148  	mem_type = bar & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
149  	switch (mem_type) {
150  	case PCI_BASE_ADDRESS_MEM_TYPE_32:
151  		break;
152  	case PCI_BASE_ADDRESS_MEM_TYPE_1M:
153  		/* 1M mem BAR treated as 32-bit BAR */
154  		break;
155  	case PCI_BASE_ADDRESS_MEM_TYPE_64:
156  		flags |= IORESOURCE_MEM_64;
157  		break;
158  	default:
159  		/* mem unknown type treated as 32-bit BAR */
160  		break;
161  	}
162  	return flags;
163  }
164  
165  #define PCI_COMMAND_DECODE_ENABLE	(PCI_COMMAND_MEMORY | PCI_COMMAND_IO)
166  
167  /**
168   * __pci_read_base - Read a PCI BAR
169   * @dev: the PCI device
170   * @type: type of the BAR
171   * @res: resource buffer to be filled in
172   * @pos: BAR position in the config space
173   *
174   * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
175   */
__pci_read_base(struct pci_dev * dev,enum pci_bar_type type,struct resource * res,unsigned int pos)176  int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
177  		    struct resource *res, unsigned int pos)
178  {
179  	u32 l = 0, sz = 0, mask;
180  	u64 l64, sz64, mask64;
181  	u16 orig_cmd;
182  	struct pci_bus_region region, inverted_region;
183  	const char *res_name = pci_resource_name(dev, res - dev->resource);
184  
185  	mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
186  
187  	/* No printks while decoding is disabled! */
188  	if (!dev->mmio_always_on) {
189  		pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
190  		if (orig_cmd & PCI_COMMAND_DECODE_ENABLE) {
191  			pci_write_config_word(dev, PCI_COMMAND,
192  				orig_cmd & ~PCI_COMMAND_DECODE_ENABLE);
193  		}
194  	}
195  
196  	res->name = pci_name(dev);
197  
198  	pci_read_config_dword(dev, pos, &l);
199  	pci_write_config_dword(dev, pos, l | mask);
200  	pci_read_config_dword(dev, pos, &sz);
201  	pci_write_config_dword(dev, pos, l);
202  
203  	/*
204  	 * All bits set in sz means the device isn't working properly.
205  	 * If the BAR isn't implemented, all bits must be 0.  If it's a
206  	 * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
207  	 * 1 must be clear.
208  	 */
209  	if (PCI_POSSIBLE_ERROR(sz))
210  		sz = 0;
211  
212  	/*
213  	 * I don't know how l can have all bits set.  Copied from old code.
214  	 * Maybe it fixes a bug on some ancient platform.
215  	 */
216  	if (PCI_POSSIBLE_ERROR(l))
217  		l = 0;
218  
219  	if (type == pci_bar_unknown) {
220  		res->flags = decode_bar(dev, l);
221  		res->flags |= IORESOURCE_SIZEALIGN;
222  		if (res->flags & IORESOURCE_IO) {
223  			l64 = l & PCI_BASE_ADDRESS_IO_MASK;
224  			sz64 = sz & PCI_BASE_ADDRESS_IO_MASK;
225  			mask64 = PCI_BASE_ADDRESS_IO_MASK & (u32)IO_SPACE_LIMIT;
226  		} else {
227  			l64 = l & PCI_BASE_ADDRESS_MEM_MASK;
228  			sz64 = sz & PCI_BASE_ADDRESS_MEM_MASK;
229  			mask64 = (u32)PCI_BASE_ADDRESS_MEM_MASK;
230  		}
231  	} else {
232  		if (l & PCI_ROM_ADDRESS_ENABLE)
233  			res->flags |= IORESOURCE_ROM_ENABLE;
234  		l64 = l & PCI_ROM_ADDRESS_MASK;
235  		sz64 = sz & PCI_ROM_ADDRESS_MASK;
236  		mask64 = PCI_ROM_ADDRESS_MASK;
237  	}
238  
239  	if (res->flags & IORESOURCE_MEM_64) {
240  		pci_read_config_dword(dev, pos + 4, &l);
241  		pci_write_config_dword(dev, pos + 4, ~0);
242  		pci_read_config_dword(dev, pos + 4, &sz);
243  		pci_write_config_dword(dev, pos + 4, l);
244  
245  		l64 |= ((u64)l << 32);
246  		sz64 |= ((u64)sz << 32);
247  		mask64 |= ((u64)~0 << 32);
248  	}
249  
250  	if (!dev->mmio_always_on && (orig_cmd & PCI_COMMAND_DECODE_ENABLE))
251  		pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
252  
253  	if (!sz64)
254  		goto fail;
255  
256  	sz64 = pci_size(l64, sz64, mask64);
257  	if (!sz64) {
258  		pci_info(dev, FW_BUG "%s: invalid; can't size\n", res_name);
259  		goto fail;
260  	}
261  
262  	if (res->flags & IORESOURCE_MEM_64) {
263  		if ((sizeof(pci_bus_addr_t) < 8 || sizeof(resource_size_t) < 8)
264  		    && sz64 > 0x100000000ULL) {
265  			res->flags |= IORESOURCE_UNSET | IORESOURCE_DISABLED;
266  			res->start = 0;
267  			res->end = 0;
268  			pci_err(dev, "%s: can't handle BAR larger than 4GB (size %#010llx)\n",
269  				res_name, (unsigned long long)sz64);
270  			goto out;
271  		}
272  
273  		if ((sizeof(pci_bus_addr_t) < 8) && l) {
274  			/* Above 32-bit boundary; try to reallocate */
275  			res->flags |= IORESOURCE_UNSET;
276  			res->start = 0;
277  			res->end = sz64 - 1;
278  			pci_info(dev, "%s: can't handle BAR above 4GB (bus address %#010llx)\n",
279  				 res_name, (unsigned long long)l64);
280  			goto out;
281  		}
282  	}
283  
284  	region.start = l64;
285  	region.end = l64 + sz64 - 1;
286  
287  	pcibios_bus_to_resource(dev->bus, res, &region);
288  	pcibios_resource_to_bus(dev->bus, &inverted_region, res);
289  
290  	/*
291  	 * If "A" is a BAR value (a bus address), "bus_to_resource(A)" is
292  	 * the corresponding resource address (the physical address used by
293  	 * the CPU.  Converting that resource address back to a bus address
294  	 * should yield the original BAR value:
295  	 *
296  	 *     resource_to_bus(bus_to_resource(A)) == A
297  	 *
298  	 * If it doesn't, CPU accesses to "bus_to_resource(A)" will not
299  	 * be claimed by the device.
300  	 */
301  	if (inverted_region.start != region.start) {
302  		res->flags |= IORESOURCE_UNSET;
303  		res->start = 0;
304  		res->end = region.end - region.start;
305  		pci_info(dev, "%s: initial BAR value %#010llx invalid\n",
306  			 res_name, (unsigned long long)region.start);
307  	}
308  
309  	goto out;
310  
311  
312  fail:
313  	res->flags = 0;
314  out:
315  	if (res->flags)
316  		pci_info(dev, "%s %pR\n", res_name, res);
317  
318  	return (res->flags & IORESOURCE_MEM_64) ? 1 : 0;
319  }
320  
pci_read_bases(struct pci_dev * dev,unsigned int howmany,int rom)321  static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
322  {
323  	unsigned int pos, reg;
324  
325  	if (dev->non_compliant_bars)
326  		return;
327  
328  	/* Per PCIe r4.0, sec 9.3.4.1.11, the VF BARs are all RO Zero */
329  	if (dev->is_virtfn)
330  		return;
331  
332  	for (pos = 0; pos < howmany; pos++) {
333  		struct resource *res = &dev->resource[pos];
334  		reg = PCI_BASE_ADDRESS_0 + (pos << 2);
335  		pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
336  	}
337  
338  	if (rom) {
339  		struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
340  		dev->rom_base_reg = rom;
341  		res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
342  				IORESOURCE_READONLY | IORESOURCE_SIZEALIGN;
343  		__pci_read_base(dev, pci_bar_mem32, res, rom);
344  	}
345  }
346  
pci_read_bridge_io(struct pci_dev * dev,struct resource * res,bool log)347  static void pci_read_bridge_io(struct pci_dev *dev, struct resource *res,
348  			       bool log)
349  {
350  	u8 io_base_lo, io_limit_lo;
351  	unsigned long io_mask, io_granularity, base, limit;
352  	struct pci_bus_region region;
353  
354  	io_mask = PCI_IO_RANGE_MASK;
355  	io_granularity = 0x1000;
356  	if (dev->io_window_1k) {
357  		/* Support 1K I/O space granularity */
358  		io_mask = PCI_IO_1K_RANGE_MASK;
359  		io_granularity = 0x400;
360  	}
361  
362  	pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
363  	pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
364  	base = (io_base_lo & io_mask) << 8;
365  	limit = (io_limit_lo & io_mask) << 8;
366  
367  	if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
368  		u16 io_base_hi, io_limit_hi;
369  
370  		pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
371  		pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
372  		base |= ((unsigned long) io_base_hi << 16);
373  		limit |= ((unsigned long) io_limit_hi << 16);
374  	}
375  
376  	if (base <= limit) {
377  		res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
378  		region.start = base;
379  		region.end = limit + io_granularity - 1;
380  		pcibios_bus_to_resource(dev->bus, res, &region);
381  		if (log)
382  			pci_info(dev, "  bridge window %pR\n", res);
383  	}
384  }
385  
pci_read_bridge_mmio(struct pci_dev * dev,struct resource * res,bool log)386  static void pci_read_bridge_mmio(struct pci_dev *dev, struct resource *res,
387  				 bool log)
388  {
389  	u16 mem_base_lo, mem_limit_lo;
390  	unsigned long base, limit;
391  	struct pci_bus_region region;
392  
393  	pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
394  	pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
395  	base = ((unsigned long) mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
396  	limit = ((unsigned long) mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
397  	if (base <= limit) {
398  		res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
399  		region.start = base;
400  		region.end = limit + 0xfffff;
401  		pcibios_bus_to_resource(dev->bus, res, &region);
402  		if (log)
403  			pci_info(dev, "  bridge window %pR\n", res);
404  	}
405  }
406  
pci_read_bridge_mmio_pref(struct pci_dev * dev,struct resource * res,bool log)407  static void pci_read_bridge_mmio_pref(struct pci_dev *dev, struct resource *res,
408  				      bool log)
409  {
410  	u16 mem_base_lo, mem_limit_lo;
411  	u64 base64, limit64;
412  	pci_bus_addr_t base, limit;
413  	struct pci_bus_region region;
414  
415  	pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
416  	pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
417  	base64 = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
418  	limit64 = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
419  
420  	if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
421  		u32 mem_base_hi, mem_limit_hi;
422  
423  		pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
424  		pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
425  
426  		/*
427  		 * Some bridges set the base > limit by default, and some
428  		 * (broken) BIOSes do not initialize them.  If we find
429  		 * this, just assume they are not being used.
430  		 */
431  		if (mem_base_hi <= mem_limit_hi) {
432  			base64 |= (u64) mem_base_hi << 32;
433  			limit64 |= (u64) mem_limit_hi << 32;
434  		}
435  	}
436  
437  	base = (pci_bus_addr_t) base64;
438  	limit = (pci_bus_addr_t) limit64;
439  
440  	if (base != base64) {
441  		pci_err(dev, "can't handle bridge window above 4GB (bus address %#010llx)\n",
442  			(unsigned long long) base64);
443  		return;
444  	}
445  
446  	if (base <= limit) {
447  		res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
448  					 IORESOURCE_MEM | IORESOURCE_PREFETCH;
449  		if (res->flags & PCI_PREF_RANGE_TYPE_64)
450  			res->flags |= IORESOURCE_MEM_64;
451  		region.start = base;
452  		region.end = limit + 0xfffff;
453  		pcibios_bus_to_resource(dev->bus, res, &region);
454  		if (log)
455  			pci_info(dev, "  bridge window %pR\n", res);
456  	}
457  }
458  
pci_read_bridge_windows(struct pci_dev * bridge)459  static void pci_read_bridge_windows(struct pci_dev *bridge)
460  {
461  	u32 buses;
462  	u16 io;
463  	u32 pmem, tmp;
464  	struct resource res;
465  
466  	pci_read_config_dword(bridge, PCI_PRIMARY_BUS, &buses);
467  	res.flags = IORESOURCE_BUS;
468  	res.start = (buses >> 8) & 0xff;
469  	res.end = (buses >> 16) & 0xff;
470  	pci_info(bridge, "PCI bridge to %pR%s\n", &res,
471  		 bridge->transparent ? " (subtractive decode)" : "");
472  
473  	pci_read_config_word(bridge, PCI_IO_BASE, &io);
474  	if (!io) {
475  		pci_write_config_word(bridge, PCI_IO_BASE, 0xe0f0);
476  		pci_read_config_word(bridge, PCI_IO_BASE, &io);
477  		pci_write_config_word(bridge, PCI_IO_BASE, 0x0);
478  	}
479  	if (io) {
480  		bridge->io_window = 1;
481  		pci_read_bridge_io(bridge, &res, true);
482  	}
483  
484  	pci_read_bridge_mmio(bridge, &res, true);
485  
486  	/*
487  	 * DECchip 21050 pass 2 errata: the bridge may miss an address
488  	 * disconnect boundary by one PCI data phase.  Workaround: do not
489  	 * use prefetching on this device.
490  	 */
491  	if (bridge->vendor == PCI_VENDOR_ID_DEC && bridge->device == 0x0001)
492  		return;
493  
494  	pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem);
495  	if (!pmem) {
496  		pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE,
497  					       0xffe0fff0);
498  		pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem);
499  		pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE, 0x0);
500  	}
501  	if (!pmem)
502  		return;
503  
504  	bridge->pref_window = 1;
505  
506  	if ((pmem & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
507  
508  		/*
509  		 * Bridge claims to have a 64-bit prefetchable memory
510  		 * window; verify that the upper bits are actually
511  		 * writable.
512  		 */
513  		pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &pmem);
514  		pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32,
515  				       0xffffffff);
516  		pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &tmp);
517  		pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32, pmem);
518  		if (tmp)
519  			bridge->pref_64_window = 1;
520  	}
521  
522  	pci_read_bridge_mmio_pref(bridge, &res, true);
523  }
524  
pci_read_bridge_bases(struct pci_bus * child)525  void pci_read_bridge_bases(struct pci_bus *child)
526  {
527  	struct pci_dev *dev = child->self;
528  	struct resource *res;
529  	int i;
530  
531  	if (pci_is_root_bus(child))	/* It's a host bus, nothing to read */
532  		return;
533  
534  	pci_info(dev, "PCI bridge to %pR%s\n",
535  		 &child->busn_res,
536  		 dev->transparent ? " (subtractive decode)" : "");
537  
538  	pci_bus_remove_resources(child);
539  	for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
540  		child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
541  
542  	pci_read_bridge_io(child->self, child->resource[0], false);
543  	pci_read_bridge_mmio(child->self, child->resource[1], false);
544  	pci_read_bridge_mmio_pref(child->self, child->resource[2], false);
545  
546  	if (dev->transparent) {
547  		pci_bus_for_each_resource(child->parent, res) {
548  			if (res && res->flags) {
549  				pci_bus_add_resource(child, res,
550  						     PCI_SUBTRACTIVE_DECODE);
551  				pci_info(dev, "  bridge window %pR (subtractive decode)\n",
552  					   res);
553  			}
554  		}
555  	}
556  }
557  
pci_alloc_bus(struct pci_bus * parent)558  static struct pci_bus *pci_alloc_bus(struct pci_bus *parent)
559  {
560  	struct pci_bus *b;
561  
562  	b = kzalloc(sizeof(*b), GFP_KERNEL);
563  	if (!b)
564  		return NULL;
565  
566  	INIT_LIST_HEAD(&b->node);
567  	INIT_LIST_HEAD(&b->children);
568  	INIT_LIST_HEAD(&b->devices);
569  	INIT_LIST_HEAD(&b->slots);
570  	INIT_LIST_HEAD(&b->resources);
571  	b->max_bus_speed = PCI_SPEED_UNKNOWN;
572  	b->cur_bus_speed = PCI_SPEED_UNKNOWN;
573  #ifdef CONFIG_PCI_DOMAINS_GENERIC
574  	if (parent)
575  		b->domain_nr = parent->domain_nr;
576  #endif
577  	return b;
578  }
579  
pci_release_host_bridge_dev(struct device * dev)580  static void pci_release_host_bridge_dev(struct device *dev)
581  {
582  	struct pci_host_bridge *bridge = to_pci_host_bridge(dev);
583  
584  	if (bridge->release_fn)
585  		bridge->release_fn(bridge);
586  
587  	pci_free_resource_list(&bridge->windows);
588  	pci_free_resource_list(&bridge->dma_ranges);
589  	kfree(bridge);
590  }
591  
pci_init_host_bridge(struct pci_host_bridge * bridge)592  static void pci_init_host_bridge(struct pci_host_bridge *bridge)
593  {
594  	INIT_LIST_HEAD(&bridge->windows);
595  	INIT_LIST_HEAD(&bridge->dma_ranges);
596  
597  	/*
598  	 * We assume we can manage these PCIe features.  Some systems may
599  	 * reserve these for use by the platform itself, e.g., an ACPI BIOS
600  	 * may implement its own AER handling and use _OSC to prevent the
601  	 * OS from interfering.
602  	 */
603  	bridge->native_aer = 1;
604  	bridge->native_pcie_hotplug = 1;
605  	bridge->native_shpc_hotplug = 1;
606  	bridge->native_pme = 1;
607  	bridge->native_ltr = 1;
608  	bridge->native_dpc = 1;
609  	bridge->domain_nr = PCI_DOMAIN_NR_NOT_SET;
610  	bridge->native_cxl_error = 1;
611  
612  	device_initialize(&bridge->dev);
613  }
614  
pci_alloc_host_bridge(size_t priv)615  struct pci_host_bridge *pci_alloc_host_bridge(size_t priv)
616  {
617  	struct pci_host_bridge *bridge;
618  
619  	bridge = kzalloc(sizeof(*bridge) + priv, GFP_KERNEL);
620  	if (!bridge)
621  		return NULL;
622  
623  	pci_init_host_bridge(bridge);
624  	bridge->dev.release = pci_release_host_bridge_dev;
625  
626  	return bridge;
627  }
628  EXPORT_SYMBOL(pci_alloc_host_bridge);
629  
devm_pci_alloc_host_bridge_release(void * data)630  static void devm_pci_alloc_host_bridge_release(void *data)
631  {
632  	pci_free_host_bridge(data);
633  }
634  
devm_pci_alloc_host_bridge(struct device * dev,size_t priv)635  struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev,
636  						   size_t priv)
637  {
638  	int ret;
639  	struct pci_host_bridge *bridge;
640  
641  	bridge = pci_alloc_host_bridge(priv);
642  	if (!bridge)
643  		return NULL;
644  
645  	bridge->dev.parent = dev;
646  
647  	ret = devm_add_action_or_reset(dev, devm_pci_alloc_host_bridge_release,
648  				       bridge);
649  	if (ret)
650  		return NULL;
651  
652  	ret = devm_of_pci_bridge_init(dev, bridge);
653  	if (ret)
654  		return NULL;
655  
656  	return bridge;
657  }
658  EXPORT_SYMBOL(devm_pci_alloc_host_bridge);
659  
pci_free_host_bridge(struct pci_host_bridge * bridge)660  void pci_free_host_bridge(struct pci_host_bridge *bridge)
661  {
662  	put_device(&bridge->dev);
663  }
664  EXPORT_SYMBOL(pci_free_host_bridge);
665  
666  /* Indexed by PCI_X_SSTATUS_FREQ (secondary bus mode and frequency) */
667  static const unsigned char pcix_bus_speed[] = {
668  	PCI_SPEED_UNKNOWN,		/* 0 */
669  	PCI_SPEED_66MHz_PCIX,		/* 1 */
670  	PCI_SPEED_100MHz_PCIX,		/* 2 */
671  	PCI_SPEED_133MHz_PCIX,		/* 3 */
672  	PCI_SPEED_UNKNOWN,		/* 4 */
673  	PCI_SPEED_66MHz_PCIX_ECC,	/* 5 */
674  	PCI_SPEED_100MHz_PCIX_ECC,	/* 6 */
675  	PCI_SPEED_133MHz_PCIX_ECC,	/* 7 */
676  	PCI_SPEED_UNKNOWN,		/* 8 */
677  	PCI_SPEED_66MHz_PCIX_266,	/* 9 */
678  	PCI_SPEED_100MHz_PCIX_266,	/* A */
679  	PCI_SPEED_133MHz_PCIX_266,	/* B */
680  	PCI_SPEED_UNKNOWN,		/* C */
681  	PCI_SPEED_66MHz_PCIX_533,	/* D */
682  	PCI_SPEED_100MHz_PCIX_533,	/* E */
683  	PCI_SPEED_133MHz_PCIX_533	/* F */
684  };
685  
686  /* Indexed by PCI_EXP_LNKCAP_SLS, PCI_EXP_LNKSTA_CLS */
687  const unsigned char pcie_link_speed[] = {
688  	PCI_SPEED_UNKNOWN,		/* 0 */
689  	PCIE_SPEED_2_5GT,		/* 1 */
690  	PCIE_SPEED_5_0GT,		/* 2 */
691  	PCIE_SPEED_8_0GT,		/* 3 */
692  	PCIE_SPEED_16_0GT,		/* 4 */
693  	PCIE_SPEED_32_0GT,		/* 5 */
694  	PCIE_SPEED_64_0GT,		/* 6 */
695  	PCI_SPEED_UNKNOWN,		/* 7 */
696  	PCI_SPEED_UNKNOWN,		/* 8 */
697  	PCI_SPEED_UNKNOWN,		/* 9 */
698  	PCI_SPEED_UNKNOWN,		/* A */
699  	PCI_SPEED_UNKNOWN,		/* B */
700  	PCI_SPEED_UNKNOWN,		/* C */
701  	PCI_SPEED_UNKNOWN,		/* D */
702  	PCI_SPEED_UNKNOWN,		/* E */
703  	PCI_SPEED_UNKNOWN		/* F */
704  };
705  EXPORT_SYMBOL_GPL(pcie_link_speed);
706  
pci_speed_string(enum pci_bus_speed speed)707  const char *pci_speed_string(enum pci_bus_speed speed)
708  {
709  	/* Indexed by the pci_bus_speed enum */
710  	static const char *speed_strings[] = {
711  	    "33 MHz PCI",		/* 0x00 */
712  	    "66 MHz PCI",		/* 0x01 */
713  	    "66 MHz PCI-X",		/* 0x02 */
714  	    "100 MHz PCI-X",		/* 0x03 */
715  	    "133 MHz PCI-X",		/* 0x04 */
716  	    NULL,			/* 0x05 */
717  	    NULL,			/* 0x06 */
718  	    NULL,			/* 0x07 */
719  	    NULL,			/* 0x08 */
720  	    "66 MHz PCI-X 266",		/* 0x09 */
721  	    "100 MHz PCI-X 266",	/* 0x0a */
722  	    "133 MHz PCI-X 266",	/* 0x0b */
723  	    "Unknown AGP",		/* 0x0c */
724  	    "1x AGP",			/* 0x0d */
725  	    "2x AGP",			/* 0x0e */
726  	    "4x AGP",			/* 0x0f */
727  	    "8x AGP",			/* 0x10 */
728  	    "66 MHz PCI-X 533",		/* 0x11 */
729  	    "100 MHz PCI-X 533",	/* 0x12 */
730  	    "133 MHz PCI-X 533",	/* 0x13 */
731  	    "2.5 GT/s PCIe",		/* 0x14 */
732  	    "5.0 GT/s PCIe",		/* 0x15 */
733  	    "8.0 GT/s PCIe",		/* 0x16 */
734  	    "16.0 GT/s PCIe",		/* 0x17 */
735  	    "32.0 GT/s PCIe",		/* 0x18 */
736  	    "64.0 GT/s PCIe",		/* 0x19 */
737  	};
738  
739  	if (speed < ARRAY_SIZE(speed_strings))
740  		return speed_strings[speed];
741  	return "Unknown";
742  }
743  EXPORT_SYMBOL_GPL(pci_speed_string);
744  
pcie_update_link_speed(struct pci_bus * bus,u16 linksta)745  void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
746  {
747  	bus->cur_bus_speed = pcie_link_speed[linksta & PCI_EXP_LNKSTA_CLS];
748  }
749  EXPORT_SYMBOL_GPL(pcie_update_link_speed);
750  
751  static unsigned char agp_speeds[] = {
752  	AGP_UNKNOWN,
753  	AGP_1X,
754  	AGP_2X,
755  	AGP_4X,
756  	AGP_8X
757  };
758  
agp_speed(int agp3,int agpstat)759  static enum pci_bus_speed agp_speed(int agp3, int agpstat)
760  {
761  	int index = 0;
762  
763  	if (agpstat & 4)
764  		index = 3;
765  	else if (agpstat & 2)
766  		index = 2;
767  	else if (agpstat & 1)
768  		index = 1;
769  	else
770  		goto out;
771  
772  	if (agp3) {
773  		index += 2;
774  		if (index == 5)
775  			index = 0;
776  	}
777  
778   out:
779  	return agp_speeds[index];
780  }
781  
pci_set_bus_speed(struct pci_bus * bus)782  static void pci_set_bus_speed(struct pci_bus *bus)
783  {
784  	struct pci_dev *bridge = bus->self;
785  	int pos;
786  
787  	pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
788  	if (!pos)
789  		pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
790  	if (pos) {
791  		u32 agpstat, agpcmd;
792  
793  		pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
794  		bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
795  
796  		pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
797  		bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
798  	}
799  
800  	pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
801  	if (pos) {
802  		u16 status;
803  		enum pci_bus_speed max;
804  
805  		pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS,
806  				     &status);
807  
808  		if (status & PCI_X_SSTATUS_533MHZ) {
809  			max = PCI_SPEED_133MHz_PCIX_533;
810  		} else if (status & PCI_X_SSTATUS_266MHZ) {
811  			max = PCI_SPEED_133MHz_PCIX_266;
812  		} else if (status & PCI_X_SSTATUS_133MHZ) {
813  			if ((status & PCI_X_SSTATUS_VERS) == PCI_X_SSTATUS_V2)
814  				max = PCI_SPEED_133MHz_PCIX_ECC;
815  			else
816  				max = PCI_SPEED_133MHz_PCIX;
817  		} else {
818  			max = PCI_SPEED_66MHz_PCIX;
819  		}
820  
821  		bus->max_bus_speed = max;
822  		bus->cur_bus_speed =
823  			pcix_bus_speed[FIELD_GET(PCI_X_SSTATUS_FREQ, status)];
824  
825  		return;
826  	}
827  
828  	if (pci_is_pcie(bridge)) {
829  		u32 linkcap;
830  		u16 linksta;
831  
832  		pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap);
833  		bus->max_bus_speed = pcie_link_speed[linkcap & PCI_EXP_LNKCAP_SLS];
834  
835  		pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta);
836  		pcie_update_link_speed(bus, linksta);
837  	}
838  }
839  
pci_host_bridge_msi_domain(struct pci_bus * bus)840  static struct irq_domain *pci_host_bridge_msi_domain(struct pci_bus *bus)
841  {
842  	struct irq_domain *d;
843  
844  	/* If the host bridge driver sets a MSI domain of the bridge, use it */
845  	d = dev_get_msi_domain(bus->bridge);
846  
847  	/*
848  	 * Any firmware interface that can resolve the msi_domain
849  	 * should be called from here.
850  	 */
851  	if (!d)
852  		d = pci_host_bridge_of_msi_domain(bus);
853  	if (!d)
854  		d = pci_host_bridge_acpi_msi_domain(bus);
855  
856  	/*
857  	 * If no IRQ domain was found via the OF tree, try looking it up
858  	 * directly through the fwnode_handle.
859  	 */
860  	if (!d) {
861  		struct fwnode_handle *fwnode = pci_root_bus_fwnode(bus);
862  
863  		if (fwnode)
864  			d = irq_find_matching_fwnode(fwnode,
865  						     DOMAIN_BUS_PCI_MSI);
866  	}
867  
868  	return d;
869  }
870  
pci_set_bus_msi_domain(struct pci_bus * bus)871  static void pci_set_bus_msi_domain(struct pci_bus *bus)
872  {
873  	struct irq_domain *d;
874  	struct pci_bus *b;
875  
876  	/*
877  	 * The bus can be a root bus, a subordinate bus, or a virtual bus
878  	 * created by an SR-IOV device.  Walk up to the first bridge device
879  	 * found or derive the domain from the host bridge.
880  	 */
881  	for (b = bus, d = NULL; !d && !pci_is_root_bus(b); b = b->parent) {
882  		if (b->self)
883  			d = dev_get_msi_domain(&b->self->dev);
884  	}
885  
886  	if (!d)
887  		d = pci_host_bridge_msi_domain(b);
888  
889  	dev_set_msi_domain(&bus->dev, d);
890  }
891  
pci_preserve_config(struct pci_host_bridge * host_bridge)892  static bool pci_preserve_config(struct pci_host_bridge *host_bridge)
893  {
894  	if (pci_acpi_preserve_config(host_bridge))
895  		return true;
896  
897  	if (host_bridge->dev.parent && host_bridge->dev.parent->of_node)
898  		return of_pci_preserve_config(host_bridge->dev.parent->of_node);
899  
900  	return false;
901  }
902  
pci_register_host_bridge(struct pci_host_bridge * bridge)903  static int pci_register_host_bridge(struct pci_host_bridge *bridge)
904  {
905  	struct device *parent = bridge->dev.parent;
906  	struct resource_entry *window, *next, *n;
907  	struct pci_bus *bus, *b;
908  	resource_size_t offset, next_offset;
909  	LIST_HEAD(resources);
910  	struct resource *res, *next_res;
911  	char addr[64], *fmt;
912  	const char *name;
913  	int err;
914  
915  	bus = pci_alloc_bus(NULL);
916  	if (!bus)
917  		return -ENOMEM;
918  
919  	bridge->bus = bus;
920  
921  	bus->sysdata = bridge->sysdata;
922  	bus->ops = bridge->ops;
923  	bus->number = bus->busn_res.start = bridge->busnr;
924  #ifdef CONFIG_PCI_DOMAINS_GENERIC
925  	if (bridge->domain_nr == PCI_DOMAIN_NR_NOT_SET)
926  		bus->domain_nr = pci_bus_find_domain_nr(bus, parent);
927  	else
928  		bus->domain_nr = bridge->domain_nr;
929  	if (bus->domain_nr < 0) {
930  		err = bus->domain_nr;
931  		goto free;
932  	}
933  #endif
934  
935  	b = pci_find_bus(pci_domain_nr(bus), bridge->busnr);
936  	if (b) {
937  		/* Ignore it if we already got here via a different bridge */
938  		dev_dbg(&b->dev, "bus already known\n");
939  		err = -EEXIST;
940  		goto free;
941  	}
942  
943  	dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(bus),
944  		     bridge->busnr);
945  
946  	err = pcibios_root_bridge_prepare(bridge);
947  	if (err)
948  		goto free;
949  
950  	/* Temporarily move resources off the list */
951  	list_splice_init(&bridge->windows, &resources);
952  	err = device_add(&bridge->dev);
953  	if (err) {
954  		put_device(&bridge->dev);
955  		goto free;
956  	}
957  	bus->bridge = get_device(&bridge->dev);
958  	device_enable_async_suspend(bus->bridge);
959  	pci_set_bus_of_node(bus);
960  	pci_set_bus_msi_domain(bus);
961  	if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev) &&
962  	    !pci_host_of_has_msi_map(parent))
963  		bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
964  
965  	if (!parent)
966  		set_dev_node(bus->bridge, pcibus_to_node(bus));
967  
968  	bus->dev.class = &pcibus_class;
969  	bus->dev.parent = bus->bridge;
970  
971  	dev_set_name(&bus->dev, "%04x:%02x", pci_domain_nr(bus), bus->number);
972  	name = dev_name(&bus->dev);
973  
974  	err = device_register(&bus->dev);
975  	if (err)
976  		goto unregister;
977  
978  	pcibios_add_bus(bus);
979  
980  	if (bus->ops->add_bus) {
981  		err = bus->ops->add_bus(bus);
982  		if (WARN_ON(err < 0))
983  			dev_err(&bus->dev, "failed to add bus: %d\n", err);
984  	}
985  
986  	/* Create legacy_io and legacy_mem files for this bus */
987  	pci_create_legacy_files(bus);
988  
989  	if (parent)
990  		dev_info(parent, "PCI host bridge to bus %s\n", name);
991  	else
992  		pr_info("PCI host bridge to bus %s\n", name);
993  
994  	if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
995  		dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
996  
997  	/* Check if the boot configuration by FW needs to be preserved */
998  	bridge->preserve_config = pci_preserve_config(bridge);
999  
1000  	/* Coalesce contiguous windows */
1001  	resource_list_for_each_entry_safe(window, n, &resources) {
1002  		if (list_is_last(&window->node, &resources))
1003  			break;
1004  
1005  		next = list_next_entry(window, node);
1006  		offset = window->offset;
1007  		res = window->res;
1008  		next_offset = next->offset;
1009  		next_res = next->res;
1010  
1011  		if (res->flags != next_res->flags || offset != next_offset)
1012  			continue;
1013  
1014  		if (res->end + 1 == next_res->start) {
1015  			next_res->start = res->start;
1016  			res->flags = res->start = res->end = 0;
1017  		}
1018  	}
1019  
1020  	/* Add initial resources to the bus */
1021  	resource_list_for_each_entry_safe(window, n, &resources) {
1022  		offset = window->offset;
1023  		res = window->res;
1024  		if (!res->flags && !res->start && !res->end) {
1025  			release_resource(res);
1026  			resource_list_destroy_entry(window);
1027  			continue;
1028  		}
1029  
1030  		list_move_tail(&window->node, &bridge->windows);
1031  
1032  		if (res->flags & IORESOURCE_BUS)
1033  			pci_bus_insert_busn_res(bus, bus->number, res->end);
1034  		else
1035  			pci_bus_add_resource(bus, res, 0);
1036  
1037  		if (offset) {
1038  			if (resource_type(res) == IORESOURCE_IO)
1039  				fmt = " (bus address [%#06llx-%#06llx])";
1040  			else
1041  				fmt = " (bus address [%#010llx-%#010llx])";
1042  
1043  			snprintf(addr, sizeof(addr), fmt,
1044  				 (unsigned long long)(res->start - offset),
1045  				 (unsigned long long)(res->end - offset));
1046  		} else
1047  			addr[0] = '\0';
1048  
1049  		dev_info(&bus->dev, "root bus resource %pR%s\n", res, addr);
1050  	}
1051  
1052  	down_write(&pci_bus_sem);
1053  	list_add_tail(&bus->node, &pci_root_buses);
1054  	up_write(&pci_bus_sem);
1055  
1056  	return 0;
1057  
1058  unregister:
1059  	put_device(&bridge->dev);
1060  	device_del(&bridge->dev);
1061  
1062  free:
1063  #ifdef CONFIG_PCI_DOMAINS_GENERIC
1064  	pci_bus_release_domain_nr(parent, bus->domain_nr);
1065  #endif
1066  	kfree(bus);
1067  	return err;
1068  }
1069  
pci_bridge_child_ext_cfg_accessible(struct pci_dev * bridge)1070  static bool pci_bridge_child_ext_cfg_accessible(struct pci_dev *bridge)
1071  {
1072  	int pos;
1073  	u32 status;
1074  
1075  	/*
1076  	 * If extended config space isn't accessible on a bridge's primary
1077  	 * bus, we certainly can't access it on the secondary bus.
1078  	 */
1079  	if (bridge->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG)
1080  		return false;
1081  
1082  	/*
1083  	 * PCIe Root Ports and switch ports are PCIe on both sides, so if
1084  	 * extended config space is accessible on the primary, it's also
1085  	 * accessible on the secondary.
1086  	 */
1087  	if (pci_is_pcie(bridge) &&
1088  	    (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT ||
1089  	     pci_pcie_type(bridge) == PCI_EXP_TYPE_UPSTREAM ||
1090  	     pci_pcie_type(bridge) == PCI_EXP_TYPE_DOWNSTREAM))
1091  		return true;
1092  
1093  	/*
1094  	 * For the other bridge types:
1095  	 *   - PCI-to-PCI bridges
1096  	 *   - PCIe-to-PCI/PCI-X forward bridges
1097  	 *   - PCI/PCI-X-to-PCIe reverse bridges
1098  	 * extended config space on the secondary side is only accessible
1099  	 * if the bridge supports PCI-X Mode 2.
1100  	 */
1101  	pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
1102  	if (!pos)
1103  		return false;
1104  
1105  	pci_read_config_dword(bridge, pos + PCI_X_STATUS, &status);
1106  	return status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ);
1107  }
1108  
pci_alloc_child_bus(struct pci_bus * parent,struct pci_dev * bridge,int busnr)1109  static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
1110  					   struct pci_dev *bridge, int busnr)
1111  {
1112  	struct pci_bus *child;
1113  	struct pci_host_bridge *host;
1114  	int i;
1115  	int ret;
1116  
1117  	/* Allocate a new bus and inherit stuff from the parent */
1118  	child = pci_alloc_bus(parent);
1119  	if (!child)
1120  		return NULL;
1121  
1122  	child->parent = parent;
1123  	child->sysdata = parent->sysdata;
1124  	child->bus_flags = parent->bus_flags;
1125  
1126  	host = pci_find_host_bridge(parent);
1127  	if (host->child_ops)
1128  		child->ops = host->child_ops;
1129  	else
1130  		child->ops = parent->ops;
1131  
1132  	/*
1133  	 * Initialize some portions of the bus device, but don't register
1134  	 * it now as the parent is not properly set up yet.
1135  	 */
1136  	child->dev.class = &pcibus_class;
1137  	dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
1138  
1139  	/* Set up the primary, secondary and subordinate bus numbers */
1140  	child->number = child->busn_res.start = busnr;
1141  	child->primary = parent->busn_res.start;
1142  	child->busn_res.end = 0xff;
1143  
1144  	if (!bridge) {
1145  		child->dev.parent = parent->bridge;
1146  		goto add_dev;
1147  	}
1148  
1149  	child->self = bridge;
1150  	child->bridge = get_device(&bridge->dev);
1151  	child->dev.parent = child->bridge;
1152  	pci_set_bus_of_node(child);
1153  	pci_set_bus_speed(child);
1154  
1155  	/*
1156  	 * Check whether extended config space is accessible on the child
1157  	 * bus.  Note that we currently assume it is always accessible on
1158  	 * the root bus.
1159  	 */
1160  	if (!pci_bridge_child_ext_cfg_accessible(bridge)) {
1161  		child->bus_flags |= PCI_BUS_FLAGS_NO_EXTCFG;
1162  		pci_info(child, "extended config space not accessible\n");
1163  	}
1164  
1165  	/* Set up default resource pointers and names */
1166  	for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
1167  		child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
1168  		child->resource[i]->name = child->name;
1169  	}
1170  	bridge->subordinate = child;
1171  
1172  add_dev:
1173  	pci_set_bus_msi_domain(child);
1174  	ret = device_register(&child->dev);
1175  	WARN_ON(ret < 0);
1176  
1177  	pcibios_add_bus(child);
1178  
1179  	if (child->ops->add_bus) {
1180  		ret = child->ops->add_bus(child);
1181  		if (WARN_ON(ret < 0))
1182  			dev_err(&child->dev, "failed to add bus: %d\n", ret);
1183  	}
1184  
1185  	/* Create legacy_io and legacy_mem files for this bus */
1186  	pci_create_legacy_files(child);
1187  
1188  	return child;
1189  }
1190  
pci_add_new_bus(struct pci_bus * parent,struct pci_dev * dev,int busnr)1191  struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
1192  				int busnr)
1193  {
1194  	struct pci_bus *child;
1195  
1196  	child = pci_alloc_child_bus(parent, dev, busnr);
1197  	if (child) {
1198  		down_write(&pci_bus_sem);
1199  		list_add_tail(&child->node, &parent->children);
1200  		up_write(&pci_bus_sem);
1201  	}
1202  	return child;
1203  }
1204  EXPORT_SYMBOL(pci_add_new_bus);
1205  
pci_enable_rrs_sv(struct pci_dev * pdev)1206  static void pci_enable_rrs_sv(struct pci_dev *pdev)
1207  {
1208  	u16 root_cap = 0;
1209  
1210  	/* Enable Configuration RRS Software Visibility if supported */
1211  	pcie_capability_read_word(pdev, PCI_EXP_RTCAP, &root_cap);
1212  	if (root_cap & PCI_EXP_RTCAP_RRS_SV) {
1213  		pcie_capability_set_word(pdev, PCI_EXP_RTCTL,
1214  					 PCI_EXP_RTCTL_RRS_SVE);
1215  		pdev->config_rrs_sv = 1;
1216  	}
1217  }
1218  
1219  static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
1220  					      unsigned int available_buses);
1221  /**
1222   * pci_ea_fixed_busnrs() - Read fixed Secondary and Subordinate bus
1223   * numbers from EA capability.
1224   * @dev: Bridge
1225   * @sec: updated with secondary bus number from EA
1226   * @sub: updated with subordinate bus number from EA
1227   *
1228   * If @dev is a bridge with EA capability that specifies valid secondary
1229   * and subordinate bus numbers, return true with the bus numbers in @sec
1230   * and @sub.  Otherwise return false.
1231   */
pci_ea_fixed_busnrs(struct pci_dev * dev,u8 * sec,u8 * sub)1232  static bool pci_ea_fixed_busnrs(struct pci_dev *dev, u8 *sec, u8 *sub)
1233  {
1234  	int ea, offset;
1235  	u32 dw;
1236  	u8 ea_sec, ea_sub;
1237  
1238  	if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE)
1239  		return false;
1240  
1241  	/* find PCI EA capability in list */
1242  	ea = pci_find_capability(dev, PCI_CAP_ID_EA);
1243  	if (!ea)
1244  		return false;
1245  
1246  	offset = ea + PCI_EA_FIRST_ENT;
1247  	pci_read_config_dword(dev, offset, &dw);
1248  	ea_sec = FIELD_GET(PCI_EA_SEC_BUS_MASK, dw);
1249  	ea_sub = FIELD_GET(PCI_EA_SUB_BUS_MASK, dw);
1250  	if (ea_sec  == 0 || ea_sub < ea_sec)
1251  		return false;
1252  
1253  	*sec = ea_sec;
1254  	*sub = ea_sub;
1255  	return true;
1256  }
1257  
1258  /*
1259   * pci_scan_bridge_extend() - Scan buses behind a bridge
1260   * @bus: Parent bus the bridge is on
1261   * @dev: Bridge itself
1262   * @max: Starting subordinate number of buses behind this bridge
1263   * @available_buses: Total number of buses available for this bridge and
1264   *		     the devices below. After the minimal bus space has
1265   *		     been allocated the remaining buses will be
1266   *		     distributed equally between hotplug-capable bridges.
1267   * @pass: Either %0 (scan already configured bridges) or %1 (scan bridges
1268   *        that need to be reconfigured.
1269   *
1270   * If it's a bridge, configure it and scan the bus behind it.
1271   * For CardBus bridges, we don't scan behind as the devices will
1272   * be handled by the bridge driver itself.
1273   *
1274   * We need to process bridges in two passes -- first we scan those
1275   * already configured by the BIOS and after we are done with all of
1276   * them, we proceed to assigning numbers to the remaining buses in
1277   * order to avoid overlaps between old and new bus numbers.
1278   *
1279   * Return: New subordinate number covering all buses behind this bridge.
1280   */
pci_scan_bridge_extend(struct pci_bus * bus,struct pci_dev * dev,int max,unsigned int available_buses,int pass)1281  static int pci_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev,
1282  				  int max, unsigned int available_buses,
1283  				  int pass)
1284  {
1285  	struct pci_bus *child;
1286  	int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
1287  	u32 buses, i, j = 0;
1288  	u16 bctl;
1289  	u8 primary, secondary, subordinate;
1290  	int broken = 0;
1291  	bool fixed_buses;
1292  	u8 fixed_sec, fixed_sub;
1293  	int next_busnr;
1294  
1295  	/*
1296  	 * Make sure the bridge is powered on to be able to access config
1297  	 * space of devices below it.
1298  	 */
1299  	pm_runtime_get_sync(&dev->dev);
1300  
1301  	pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
1302  	primary = buses & 0xFF;
1303  	secondary = (buses >> 8) & 0xFF;
1304  	subordinate = (buses >> 16) & 0xFF;
1305  
1306  	pci_dbg(dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
1307  		secondary, subordinate, pass);
1308  
1309  	if (!primary && (primary != bus->number) && secondary && subordinate) {
1310  		pci_warn(dev, "Primary bus is hard wired to 0\n");
1311  		primary = bus->number;
1312  	}
1313  
1314  	/* Check if setup is sensible at all */
1315  	if (!pass &&
1316  	    (primary != bus->number || secondary <= bus->number ||
1317  	     secondary > subordinate)) {
1318  		pci_info(dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
1319  			 secondary, subordinate);
1320  		broken = 1;
1321  	}
1322  
1323  	/*
1324  	 * Disable Master-Abort Mode during probing to avoid reporting of
1325  	 * bus errors in some architectures.
1326  	 */
1327  	pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
1328  	pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
1329  			      bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
1330  
1331  	pci_enable_rrs_sv(dev);
1332  
1333  	if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
1334  	    !is_cardbus && !broken) {
1335  		unsigned int cmax, buses;
1336  
1337  		/*
1338  		 * Bus already configured by firmware, process it in the
1339  		 * first pass and just note the configuration.
1340  		 */
1341  		if (pass)
1342  			goto out;
1343  
1344  		/*
1345  		 * The bus might already exist for two reasons: Either we
1346  		 * are rescanning the bus or the bus is reachable through
1347  		 * more than one bridge. The second case can happen with
1348  		 * the i450NX chipset.
1349  		 */
1350  		child = pci_find_bus(pci_domain_nr(bus), secondary);
1351  		if (!child) {
1352  			child = pci_add_new_bus(bus, dev, secondary);
1353  			if (!child)
1354  				goto out;
1355  			child->primary = primary;
1356  			pci_bus_insert_busn_res(child, secondary, subordinate);
1357  			child->bridge_ctl = bctl;
1358  		}
1359  
1360  		buses = subordinate - secondary;
1361  		cmax = pci_scan_child_bus_extend(child, buses);
1362  		if (cmax > subordinate)
1363  			pci_warn(dev, "bridge has subordinate %02x but max busn %02x\n",
1364  				 subordinate, cmax);
1365  
1366  		/* Subordinate should equal child->busn_res.end */
1367  		if (subordinate > max)
1368  			max = subordinate;
1369  	} else {
1370  
1371  		/*
1372  		 * We need to assign a number to this bus which we always
1373  		 * do in the second pass.
1374  		 */
1375  		if (!pass) {
1376  			if (pcibios_assign_all_busses() || broken || is_cardbus)
1377  
1378  				/*
1379  				 * Temporarily disable forwarding of the
1380  				 * configuration cycles on all bridges in
1381  				 * this bus segment to avoid possible
1382  				 * conflicts in the second pass between two
1383  				 * bridges programmed with overlapping bus
1384  				 * ranges.
1385  				 */
1386  				pci_write_config_dword(dev, PCI_PRIMARY_BUS,
1387  						       buses & ~0xffffff);
1388  			goto out;
1389  		}
1390  
1391  		/* Clear errors */
1392  		pci_write_config_word(dev, PCI_STATUS, 0xffff);
1393  
1394  		/* Read bus numbers from EA Capability (if present) */
1395  		fixed_buses = pci_ea_fixed_busnrs(dev, &fixed_sec, &fixed_sub);
1396  		if (fixed_buses)
1397  			next_busnr = fixed_sec;
1398  		else
1399  			next_busnr = max + 1;
1400  
1401  		/*
1402  		 * Prevent assigning a bus number that already exists.
1403  		 * This can happen when a bridge is hot-plugged, so in this
1404  		 * case we only re-scan this bus.
1405  		 */
1406  		child = pci_find_bus(pci_domain_nr(bus), next_busnr);
1407  		if (!child) {
1408  			child = pci_add_new_bus(bus, dev, next_busnr);
1409  			if (!child)
1410  				goto out;
1411  			pci_bus_insert_busn_res(child, next_busnr,
1412  						bus->busn_res.end);
1413  		}
1414  		max++;
1415  		if (available_buses)
1416  			available_buses--;
1417  
1418  		buses = (buses & 0xff000000)
1419  		      | ((unsigned int)(child->primary)     <<  0)
1420  		      | ((unsigned int)(child->busn_res.start)   <<  8)
1421  		      | ((unsigned int)(child->busn_res.end) << 16);
1422  
1423  		/*
1424  		 * yenta.c forces a secondary latency timer of 176.
1425  		 * Copy that behaviour here.
1426  		 */
1427  		if (is_cardbus) {
1428  			buses &= ~0xff000000;
1429  			buses |= CARDBUS_LATENCY_TIMER << 24;
1430  		}
1431  
1432  		/* We need to blast all three values with a single write */
1433  		pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
1434  
1435  		if (!is_cardbus) {
1436  			child->bridge_ctl = bctl;
1437  			max = pci_scan_child_bus_extend(child, available_buses);
1438  		} else {
1439  
1440  			/*
1441  			 * For CardBus bridges, we leave 4 bus numbers as
1442  			 * cards with a PCI-to-PCI bridge can be inserted
1443  			 * later.
1444  			 */
1445  			for (i = 0; i < CARDBUS_RESERVE_BUSNR; i++) {
1446  				struct pci_bus *parent = bus;
1447  				if (pci_find_bus(pci_domain_nr(bus),
1448  							max+i+1))
1449  					break;
1450  				while (parent->parent) {
1451  					if ((!pcibios_assign_all_busses()) &&
1452  					    (parent->busn_res.end > max) &&
1453  					    (parent->busn_res.end <= max+i)) {
1454  						j = 1;
1455  					}
1456  					parent = parent->parent;
1457  				}
1458  				if (j) {
1459  
1460  					/*
1461  					 * Often, there are two CardBus
1462  					 * bridges -- try to leave one
1463  					 * valid bus number for each one.
1464  					 */
1465  					i /= 2;
1466  					break;
1467  				}
1468  			}
1469  			max += i;
1470  		}
1471  
1472  		/*
1473  		 * Set subordinate bus number to its real value.
1474  		 * If fixed subordinate bus number exists from EA
1475  		 * capability then use it.
1476  		 */
1477  		if (fixed_buses)
1478  			max = fixed_sub;
1479  		pci_bus_update_busn_res_end(child, max);
1480  		pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
1481  	}
1482  
1483  	sprintf(child->name,
1484  		(is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
1485  		pci_domain_nr(bus), child->number);
1486  
1487  	/* Check that all devices are accessible */
1488  	while (bus->parent) {
1489  		if ((child->busn_res.end > bus->busn_res.end) ||
1490  		    (child->number > bus->busn_res.end) ||
1491  		    (child->number < bus->number) ||
1492  		    (child->busn_res.end < bus->number)) {
1493  			dev_info(&dev->dev, "devices behind bridge are unusable because %pR cannot be assigned for them\n",
1494  				 &child->busn_res);
1495  			break;
1496  		}
1497  		bus = bus->parent;
1498  	}
1499  
1500  out:
1501  	/* Clear errors in the Secondary Status Register */
1502  	pci_write_config_word(dev, PCI_SEC_STATUS, 0xffff);
1503  
1504  	pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
1505  
1506  	pm_runtime_put(&dev->dev);
1507  
1508  	return max;
1509  }
1510  
1511  /*
1512   * pci_scan_bridge() - Scan buses behind a bridge
1513   * @bus: Parent bus the bridge is on
1514   * @dev: Bridge itself
1515   * @max: Starting subordinate number of buses behind this bridge
1516   * @pass: Either %0 (scan already configured bridges) or %1 (scan bridges
1517   *        that need to be reconfigured.
1518   *
1519   * If it's a bridge, configure it and scan the bus behind it.
1520   * For CardBus bridges, we don't scan behind as the devices will
1521   * be handled by the bridge driver itself.
1522   *
1523   * We need to process bridges in two passes -- first we scan those
1524   * already configured by the BIOS and after we are done with all of
1525   * them, we proceed to assigning numbers to the remaining buses in
1526   * order to avoid overlaps between old and new bus numbers.
1527   *
1528   * Return: New subordinate number covering all buses behind this bridge.
1529   */
pci_scan_bridge(struct pci_bus * bus,struct pci_dev * dev,int max,int pass)1530  int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
1531  {
1532  	return pci_scan_bridge_extend(bus, dev, max, 0, pass);
1533  }
1534  EXPORT_SYMBOL(pci_scan_bridge);
1535  
1536  /*
1537   * Read interrupt line and base address registers.
1538   * The architecture-dependent code can tweak these, of course.
1539   */
pci_read_irq(struct pci_dev * dev)1540  static void pci_read_irq(struct pci_dev *dev)
1541  {
1542  	unsigned char irq;
1543  
1544  	/* VFs are not allowed to use INTx, so skip the config reads */
1545  	if (dev->is_virtfn) {
1546  		dev->pin = 0;
1547  		dev->irq = 0;
1548  		return;
1549  	}
1550  
1551  	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
1552  	dev->pin = irq;
1553  	if (irq)
1554  		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
1555  	dev->irq = irq;
1556  }
1557  
set_pcie_port_type(struct pci_dev * pdev)1558  void set_pcie_port_type(struct pci_dev *pdev)
1559  {
1560  	int pos;
1561  	u16 reg16;
1562  	u32 reg32;
1563  	int type;
1564  	struct pci_dev *parent;
1565  
1566  	pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
1567  	if (!pos)
1568  		return;
1569  
1570  	pdev->pcie_cap = pos;
1571  	pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
1572  	pdev->pcie_flags_reg = reg16;
1573  	pci_read_config_dword(pdev, pos + PCI_EXP_DEVCAP, &pdev->devcap);
1574  	pdev->pcie_mpss = FIELD_GET(PCI_EXP_DEVCAP_PAYLOAD, pdev->devcap);
1575  
1576  	pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &reg32);
1577  	if (reg32 & PCI_EXP_LNKCAP_DLLLARC)
1578  		pdev->link_active_reporting = 1;
1579  
1580  	parent = pci_upstream_bridge(pdev);
1581  	if (!parent)
1582  		return;
1583  
1584  	/*
1585  	 * Some systems do not identify their upstream/downstream ports
1586  	 * correctly so detect impossible configurations here and correct
1587  	 * the port type accordingly.
1588  	 */
1589  	type = pci_pcie_type(pdev);
1590  	if (type == PCI_EXP_TYPE_DOWNSTREAM) {
1591  		/*
1592  		 * If pdev claims to be downstream port but the parent
1593  		 * device is also downstream port assume pdev is actually
1594  		 * upstream port.
1595  		 */
1596  		if (pcie_downstream_port(parent)) {
1597  			pci_info(pdev, "claims to be downstream port but is acting as upstream port, correcting type\n");
1598  			pdev->pcie_flags_reg &= ~PCI_EXP_FLAGS_TYPE;
1599  			pdev->pcie_flags_reg |= PCI_EXP_TYPE_UPSTREAM;
1600  		}
1601  	} else if (type == PCI_EXP_TYPE_UPSTREAM) {
1602  		/*
1603  		 * If pdev claims to be upstream port but the parent
1604  		 * device is also upstream port assume pdev is actually
1605  		 * downstream port.
1606  		 */
1607  		if (pci_pcie_type(parent) == PCI_EXP_TYPE_UPSTREAM) {
1608  			pci_info(pdev, "claims to be upstream port but is acting as downstream port, correcting type\n");
1609  			pdev->pcie_flags_reg &= ~PCI_EXP_FLAGS_TYPE;
1610  			pdev->pcie_flags_reg |= PCI_EXP_TYPE_DOWNSTREAM;
1611  		}
1612  	}
1613  }
1614  
set_pcie_hotplug_bridge(struct pci_dev * pdev)1615  void set_pcie_hotplug_bridge(struct pci_dev *pdev)
1616  {
1617  	u32 reg32;
1618  
1619  	pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32);
1620  	if (reg32 & PCI_EXP_SLTCAP_HPC)
1621  		pdev->is_hotplug_bridge = 1;
1622  }
1623  
set_pcie_thunderbolt(struct pci_dev * dev)1624  static void set_pcie_thunderbolt(struct pci_dev *dev)
1625  {
1626  	u16 vsec;
1627  
1628  	/* Is the device part of a Thunderbolt controller? */
1629  	vsec = pci_find_vsec_capability(dev, PCI_VENDOR_ID_INTEL, PCI_VSEC_ID_INTEL_TBT);
1630  	if (vsec)
1631  		dev->is_thunderbolt = 1;
1632  }
1633  
set_pcie_untrusted(struct pci_dev * dev)1634  static void set_pcie_untrusted(struct pci_dev *dev)
1635  {
1636  	struct pci_dev *parent;
1637  
1638  	/*
1639  	 * If the upstream bridge is untrusted we treat this device
1640  	 * untrusted as well.
1641  	 */
1642  	parent = pci_upstream_bridge(dev);
1643  	if (parent && (parent->untrusted || parent->external_facing))
1644  		dev->untrusted = true;
1645  }
1646  
pci_set_removable(struct pci_dev * dev)1647  static void pci_set_removable(struct pci_dev *dev)
1648  {
1649  	struct pci_dev *parent = pci_upstream_bridge(dev);
1650  
1651  	/*
1652  	 * We (only) consider everything downstream from an external_facing
1653  	 * device to be removable by the user. We're mainly concerned with
1654  	 * consumer platforms with user accessible thunderbolt ports that are
1655  	 * vulnerable to DMA attacks, and we expect those ports to be marked by
1656  	 * the firmware as external_facing. Devices in traditional hotplug
1657  	 * slots can technically be removed, but the expectation is that unless
1658  	 * the port is marked with external_facing, such devices are less
1659  	 * accessible to user / may not be removed by end user, and thus not
1660  	 * exposed as "removable" to userspace.
1661  	 */
1662  	if (parent &&
1663  	    (parent->external_facing || dev_is_removable(&parent->dev)))
1664  		dev_set_removable(&dev->dev, DEVICE_REMOVABLE);
1665  }
1666  
1667  /**
1668   * pci_ext_cfg_is_aliased - Is ext config space just an alias of std config?
1669   * @dev: PCI device
1670   *
1671   * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 says that
1672   * when forwarding a type1 configuration request the bridge must check that
1673   * the extended register address field is zero.  The bridge is not permitted
1674   * to forward the transactions and must handle it as an Unsupported Request.
1675   * Some bridges do not follow this rule and simply drop the extended register
1676   * bits, resulting in the standard config space being aliased, every 256
1677   * bytes across the entire configuration space.  Test for this condition by
1678   * comparing the first dword of each potential alias to the vendor/device ID.
1679   * Known offenders:
1680   *   ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01 & 03)
1681   *   AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40)
1682   */
pci_ext_cfg_is_aliased(struct pci_dev * dev)1683  static bool pci_ext_cfg_is_aliased(struct pci_dev *dev)
1684  {
1685  #ifdef CONFIG_PCI_QUIRKS
1686  	int pos, ret;
1687  	u32 header, tmp;
1688  
1689  	pci_read_config_dword(dev, PCI_VENDOR_ID, &header);
1690  
1691  	for (pos = PCI_CFG_SPACE_SIZE;
1692  	     pos < PCI_CFG_SPACE_EXP_SIZE; pos += PCI_CFG_SPACE_SIZE) {
1693  		ret = pci_read_config_dword(dev, pos, &tmp);
1694  		if ((ret != PCIBIOS_SUCCESSFUL) || (header != tmp))
1695  			return false;
1696  	}
1697  
1698  	return true;
1699  #else
1700  	return false;
1701  #endif
1702  }
1703  
1704  /**
1705   * pci_cfg_space_size_ext - Get the configuration space size of the PCI device
1706   * @dev: PCI device
1707   *
1708   * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1709   * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
1710   * access it.  Maybe we don't have a way to generate extended config space
1711   * accesses, or the device is behind a reverse Express bridge.  So we try
1712   * reading the dword at 0x100 which must either be 0 or a valid extended
1713   * capability header.
1714   */
pci_cfg_space_size_ext(struct pci_dev * dev)1715  static int pci_cfg_space_size_ext(struct pci_dev *dev)
1716  {
1717  	u32 status;
1718  	int pos = PCI_CFG_SPACE_SIZE;
1719  
1720  	if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1721  		return PCI_CFG_SPACE_SIZE;
1722  	if (PCI_POSSIBLE_ERROR(status) || pci_ext_cfg_is_aliased(dev))
1723  		return PCI_CFG_SPACE_SIZE;
1724  
1725  	return PCI_CFG_SPACE_EXP_SIZE;
1726  }
1727  
pci_cfg_space_size(struct pci_dev * dev)1728  int pci_cfg_space_size(struct pci_dev *dev)
1729  {
1730  	int pos;
1731  	u32 status;
1732  	u16 class;
1733  
1734  #ifdef CONFIG_PCI_IOV
1735  	/*
1736  	 * Per the SR-IOV specification (rev 1.1, sec 3.5), VFs are required to
1737  	 * implement a PCIe capability and therefore must implement extended
1738  	 * config space.  We can skip the NO_EXTCFG test below and the
1739  	 * reachability/aliasing test in pci_cfg_space_size_ext() by virtue of
1740  	 * the fact that the SR-IOV capability on the PF resides in extended
1741  	 * config space and must be accessible and non-aliased to have enabled
1742  	 * support for this VF.  This is a micro performance optimization for
1743  	 * systems supporting many VFs.
1744  	 */
1745  	if (dev->is_virtfn)
1746  		return PCI_CFG_SPACE_EXP_SIZE;
1747  #endif
1748  
1749  	if (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG)
1750  		return PCI_CFG_SPACE_SIZE;
1751  
1752  	class = dev->class >> 8;
1753  	if (class == PCI_CLASS_BRIDGE_HOST)
1754  		return pci_cfg_space_size_ext(dev);
1755  
1756  	if (pci_is_pcie(dev))
1757  		return pci_cfg_space_size_ext(dev);
1758  
1759  	pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1760  	if (!pos)
1761  		return PCI_CFG_SPACE_SIZE;
1762  
1763  	pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1764  	if (status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ))
1765  		return pci_cfg_space_size_ext(dev);
1766  
1767  	return PCI_CFG_SPACE_SIZE;
1768  }
1769  
pci_class(struct pci_dev * dev)1770  static u32 pci_class(struct pci_dev *dev)
1771  {
1772  	u32 class;
1773  
1774  #ifdef CONFIG_PCI_IOV
1775  	if (dev->is_virtfn)
1776  		return dev->physfn->sriov->class;
1777  #endif
1778  	pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
1779  	return class;
1780  }
1781  
pci_subsystem_ids(struct pci_dev * dev,u16 * vendor,u16 * device)1782  static void pci_subsystem_ids(struct pci_dev *dev, u16 *vendor, u16 *device)
1783  {
1784  #ifdef CONFIG_PCI_IOV
1785  	if (dev->is_virtfn) {
1786  		*vendor = dev->physfn->sriov->subsystem_vendor;
1787  		*device = dev->physfn->sriov->subsystem_device;
1788  		return;
1789  	}
1790  #endif
1791  	pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, vendor);
1792  	pci_read_config_word(dev, PCI_SUBSYSTEM_ID, device);
1793  }
1794  
pci_hdr_type(struct pci_dev * dev)1795  static u8 pci_hdr_type(struct pci_dev *dev)
1796  {
1797  	u8 hdr_type;
1798  
1799  #ifdef CONFIG_PCI_IOV
1800  	if (dev->is_virtfn)
1801  		return dev->physfn->sriov->hdr_type;
1802  #endif
1803  	pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type);
1804  	return hdr_type;
1805  }
1806  
1807  #define LEGACY_IO_RESOURCE	(IORESOURCE_IO | IORESOURCE_PCI_FIXED)
1808  
1809  /**
1810   * pci_intx_mask_broken - Test PCI_COMMAND_INTX_DISABLE writability
1811   * @dev: PCI device
1812   *
1813   * Test whether PCI_COMMAND_INTX_DISABLE is writable for @dev.  Check this
1814   * at enumeration-time to avoid modifying PCI_COMMAND at run-time.
1815   */
pci_intx_mask_broken(struct pci_dev * dev)1816  static int pci_intx_mask_broken(struct pci_dev *dev)
1817  {
1818  	u16 orig, toggle, new;
1819  
1820  	pci_read_config_word(dev, PCI_COMMAND, &orig);
1821  	toggle = orig ^ PCI_COMMAND_INTX_DISABLE;
1822  	pci_write_config_word(dev, PCI_COMMAND, toggle);
1823  	pci_read_config_word(dev, PCI_COMMAND, &new);
1824  
1825  	pci_write_config_word(dev, PCI_COMMAND, orig);
1826  
1827  	/*
1828  	 * PCI_COMMAND_INTX_DISABLE was reserved and read-only prior to PCI
1829  	 * r2.3, so strictly speaking, a device is not *broken* if it's not
1830  	 * writable.  But we'll live with the misnomer for now.
1831  	 */
1832  	if (new != toggle)
1833  		return 1;
1834  	return 0;
1835  }
1836  
early_dump_pci_device(struct pci_dev * pdev)1837  static void early_dump_pci_device(struct pci_dev *pdev)
1838  {
1839  	u32 value[256 / 4];
1840  	int i;
1841  
1842  	pci_info(pdev, "config space:\n");
1843  
1844  	for (i = 0; i < 256; i += 4)
1845  		pci_read_config_dword(pdev, i, &value[i / 4]);
1846  
1847  	print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 1,
1848  		       value, 256, false);
1849  }
1850  
pci_type_str(struct pci_dev * dev)1851  static const char *pci_type_str(struct pci_dev *dev)
1852  {
1853  	static const char * const str[] = {
1854  		"PCIe Endpoint",
1855  		"PCIe Legacy Endpoint",
1856  		"PCIe unknown",
1857  		"PCIe unknown",
1858  		"PCIe Root Port",
1859  		"PCIe Switch Upstream Port",
1860  		"PCIe Switch Downstream Port",
1861  		"PCIe to PCI/PCI-X bridge",
1862  		"PCI/PCI-X to PCIe bridge",
1863  		"PCIe Root Complex Integrated Endpoint",
1864  		"PCIe Root Complex Event Collector",
1865  	};
1866  	int type;
1867  
1868  	if (pci_is_pcie(dev)) {
1869  		type = pci_pcie_type(dev);
1870  		if (type < ARRAY_SIZE(str))
1871  			return str[type];
1872  
1873  		return "PCIe unknown";
1874  	}
1875  
1876  	switch (dev->hdr_type) {
1877  	case PCI_HEADER_TYPE_NORMAL:
1878  		return "conventional PCI endpoint";
1879  	case PCI_HEADER_TYPE_BRIDGE:
1880  		return "conventional PCI bridge";
1881  	case PCI_HEADER_TYPE_CARDBUS:
1882  		return "CardBus bridge";
1883  	default:
1884  		return "conventional PCI";
1885  	}
1886  }
1887  
1888  /**
1889   * pci_setup_device - Fill in class and map information of a device
1890   * @dev: the device structure to fill
1891   *
1892   * Initialize the device structure with information about the device's
1893   * vendor,class,memory and IO-space addresses, IRQ lines etc.
1894   * Called at initialisation of the PCI subsystem and by CardBus services.
1895   * Returns 0 on success and negative if unknown type of device (not normal,
1896   * bridge or CardBus).
1897   */
pci_setup_device(struct pci_dev * dev)1898  int pci_setup_device(struct pci_dev *dev)
1899  {
1900  	u32 class;
1901  	u16 cmd;
1902  	u8 hdr_type;
1903  	int err, pos = 0;
1904  	struct pci_bus_region region;
1905  	struct resource *res;
1906  
1907  	hdr_type = pci_hdr_type(dev);
1908  
1909  	dev->sysdata = dev->bus->sysdata;
1910  	dev->dev.parent = dev->bus->bridge;
1911  	dev->dev.bus = &pci_bus_type;
1912  	dev->hdr_type = hdr_type & 0x7f;
1913  	dev->multifunction = !!(hdr_type & 0x80);
1914  	dev->error_state = pci_channel_io_normal;
1915  	set_pcie_port_type(dev);
1916  
1917  	err = pci_set_of_node(dev);
1918  	if (err)
1919  		return err;
1920  	pci_set_acpi_fwnode(dev);
1921  
1922  	pci_dev_assign_slot(dev);
1923  
1924  	/*
1925  	 * Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
1926  	 * set this higher, assuming the system even supports it.
1927  	 */
1928  	dev->dma_mask = 0xffffffff;
1929  
1930  	dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
1931  		     dev->bus->number, PCI_SLOT(dev->devfn),
1932  		     PCI_FUNC(dev->devfn));
1933  
1934  	class = pci_class(dev);
1935  
1936  	dev->revision = class & 0xff;
1937  	dev->class = class >> 8;		    /* upper 3 bytes */
1938  
1939  	if (pci_early_dump)
1940  		early_dump_pci_device(dev);
1941  
1942  	/* Need to have dev->class ready */
1943  	dev->cfg_size = pci_cfg_space_size(dev);
1944  
1945  	/* Need to have dev->cfg_size ready */
1946  	set_pcie_thunderbolt(dev);
1947  
1948  	set_pcie_untrusted(dev);
1949  
1950  	/* "Unknown power state" */
1951  	dev->current_state = PCI_UNKNOWN;
1952  
1953  	/* Early fixups, before probing the BARs */
1954  	pci_fixup_device(pci_fixup_early, dev);
1955  
1956  	pci_set_removable(dev);
1957  
1958  	pci_info(dev, "[%04x:%04x] type %02x class %#08x %s\n",
1959  		 dev->vendor, dev->device, dev->hdr_type, dev->class,
1960  		 pci_type_str(dev));
1961  
1962  	/* Device class may be changed after fixup */
1963  	class = dev->class >> 8;
1964  
1965  	if (dev->non_compliant_bars && !dev->mmio_always_on) {
1966  		pci_read_config_word(dev, PCI_COMMAND, &cmd);
1967  		if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
1968  			pci_info(dev, "device has non-compliant BARs; disabling IO/MEM decoding\n");
1969  			cmd &= ~PCI_COMMAND_IO;
1970  			cmd &= ~PCI_COMMAND_MEMORY;
1971  			pci_write_config_word(dev, PCI_COMMAND, cmd);
1972  		}
1973  	}
1974  
1975  	dev->broken_intx_masking = pci_intx_mask_broken(dev);
1976  
1977  	switch (dev->hdr_type) {		    /* header type */
1978  	case PCI_HEADER_TYPE_NORMAL:		    /* standard header */
1979  		if (class == PCI_CLASS_BRIDGE_PCI)
1980  			goto bad;
1981  		pci_read_irq(dev);
1982  		pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
1983  
1984  		pci_subsystem_ids(dev, &dev->subsystem_vendor, &dev->subsystem_device);
1985  
1986  		/*
1987  		 * Do the ugly legacy mode stuff here rather than broken chip
1988  		 * quirk code. Legacy mode ATA controllers have fixed
1989  		 * addresses. These are not always echoed in BAR0-3, and
1990  		 * BAR0-3 in a few cases contain junk!
1991  		 */
1992  		if (class == PCI_CLASS_STORAGE_IDE) {
1993  			u8 progif;
1994  			pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
1995  			if ((progif & 1) == 0) {
1996  				region.start = 0x1F0;
1997  				region.end = 0x1F7;
1998  				res = &dev->resource[0];
1999  				res->flags = LEGACY_IO_RESOURCE;
2000  				pcibios_bus_to_resource(dev->bus, res, &region);
2001  				pci_info(dev, "BAR 0 %pR: legacy IDE quirk\n",
2002  					 res);
2003  				region.start = 0x3F6;
2004  				region.end = 0x3F6;
2005  				res = &dev->resource[1];
2006  				res->flags = LEGACY_IO_RESOURCE;
2007  				pcibios_bus_to_resource(dev->bus, res, &region);
2008  				pci_info(dev, "BAR 1 %pR: legacy IDE quirk\n",
2009  					 res);
2010  			}
2011  			if ((progif & 4) == 0) {
2012  				region.start = 0x170;
2013  				region.end = 0x177;
2014  				res = &dev->resource[2];
2015  				res->flags = LEGACY_IO_RESOURCE;
2016  				pcibios_bus_to_resource(dev->bus, res, &region);
2017  				pci_info(dev, "BAR 2 %pR: legacy IDE quirk\n",
2018  					 res);
2019  				region.start = 0x376;
2020  				region.end = 0x376;
2021  				res = &dev->resource[3];
2022  				res->flags = LEGACY_IO_RESOURCE;
2023  				pcibios_bus_to_resource(dev->bus, res, &region);
2024  				pci_info(dev, "BAR 3 %pR: legacy IDE quirk\n",
2025  					 res);
2026  			}
2027  		}
2028  		break;
2029  
2030  	case PCI_HEADER_TYPE_BRIDGE:		    /* bridge header */
2031  		/*
2032  		 * The PCI-to-PCI bridge spec requires that subtractive
2033  		 * decoding (i.e. transparent) bridge must have programming
2034  		 * interface code of 0x01.
2035  		 */
2036  		pci_read_irq(dev);
2037  		dev->transparent = ((dev->class & 0xff) == 1);
2038  		pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
2039  		pci_read_bridge_windows(dev);
2040  		set_pcie_hotplug_bridge(dev);
2041  		pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
2042  		if (pos) {
2043  			pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
2044  			pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
2045  		}
2046  		break;
2047  
2048  	case PCI_HEADER_TYPE_CARDBUS:		    /* CardBus bridge header */
2049  		if (class != PCI_CLASS_BRIDGE_CARDBUS)
2050  			goto bad;
2051  		pci_read_irq(dev);
2052  		pci_read_bases(dev, 1, 0);
2053  		pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
2054  		pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
2055  		break;
2056  
2057  	default:				    /* unknown header */
2058  		pci_err(dev, "unknown header type %02x, ignoring device\n",
2059  			dev->hdr_type);
2060  		pci_release_of_node(dev);
2061  		return -EIO;
2062  
2063  	bad:
2064  		pci_err(dev, "ignoring class %#08x (doesn't match header type %02x)\n",
2065  			dev->class, dev->hdr_type);
2066  		dev->class = PCI_CLASS_NOT_DEFINED << 8;
2067  	}
2068  
2069  	/* We found a fine healthy device, go go go... */
2070  	return 0;
2071  }
2072  
pci_configure_mps(struct pci_dev * dev)2073  static void pci_configure_mps(struct pci_dev *dev)
2074  {
2075  	struct pci_dev *bridge = pci_upstream_bridge(dev);
2076  	int mps, mpss, p_mps, rc;
2077  
2078  	if (!pci_is_pcie(dev))
2079  		return;
2080  
2081  	/* MPS and MRRS fields are of type 'RsvdP' for VFs, short-circuit out */
2082  	if (dev->is_virtfn)
2083  		return;
2084  
2085  	/*
2086  	 * For Root Complex Integrated Endpoints, program the maximum
2087  	 * supported value unless limited by the PCIE_BUS_PEER2PEER case.
2088  	 */
2089  	if (pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END) {
2090  		if (pcie_bus_config == PCIE_BUS_PEER2PEER)
2091  			mps = 128;
2092  		else
2093  			mps = 128 << dev->pcie_mpss;
2094  		rc = pcie_set_mps(dev, mps);
2095  		if (rc) {
2096  			pci_warn(dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
2097  				 mps);
2098  		}
2099  		return;
2100  	}
2101  
2102  	if (!bridge || !pci_is_pcie(bridge))
2103  		return;
2104  
2105  	mps = pcie_get_mps(dev);
2106  	p_mps = pcie_get_mps(bridge);
2107  
2108  	if (mps == p_mps)
2109  		return;
2110  
2111  	if (pcie_bus_config == PCIE_BUS_TUNE_OFF) {
2112  		pci_warn(dev, "Max Payload Size %d, but upstream %s set to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
2113  			 mps, pci_name(bridge), p_mps);
2114  		return;
2115  	}
2116  
2117  	/*
2118  	 * Fancier MPS configuration is done later by
2119  	 * pcie_bus_configure_settings()
2120  	 */
2121  	if (pcie_bus_config != PCIE_BUS_DEFAULT)
2122  		return;
2123  
2124  	mpss = 128 << dev->pcie_mpss;
2125  	if (mpss < p_mps && pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) {
2126  		pcie_set_mps(bridge, mpss);
2127  		pci_info(dev, "Upstream bridge's Max Payload Size set to %d (was %d, max %d)\n",
2128  			 mpss, p_mps, 128 << bridge->pcie_mpss);
2129  		p_mps = pcie_get_mps(bridge);
2130  	}
2131  
2132  	rc = pcie_set_mps(dev, p_mps);
2133  	if (rc) {
2134  		pci_warn(dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
2135  			 p_mps);
2136  		return;
2137  	}
2138  
2139  	pci_info(dev, "Max Payload Size set to %d (was %d, max %d)\n",
2140  		 p_mps, mps, mpss);
2141  }
2142  
pci_configure_extended_tags(struct pci_dev * dev,void * ign)2143  int pci_configure_extended_tags(struct pci_dev *dev, void *ign)
2144  {
2145  	struct pci_host_bridge *host;
2146  	u32 cap;
2147  	u16 ctl;
2148  	int ret;
2149  
2150  	if (!pci_is_pcie(dev))
2151  		return 0;
2152  
2153  	ret = pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &cap);
2154  	if (ret)
2155  		return 0;
2156  
2157  	if (!(cap & PCI_EXP_DEVCAP_EXT_TAG))
2158  		return 0;
2159  
2160  	ret = pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &ctl);
2161  	if (ret)
2162  		return 0;
2163  
2164  	host = pci_find_host_bridge(dev->bus);
2165  	if (!host)
2166  		return 0;
2167  
2168  	/*
2169  	 * If some device in the hierarchy doesn't handle Extended Tags
2170  	 * correctly, make sure they're disabled.
2171  	 */
2172  	if (host->no_ext_tags) {
2173  		if (ctl & PCI_EXP_DEVCTL_EXT_TAG) {
2174  			pci_info(dev, "disabling Extended Tags\n");
2175  			pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
2176  						   PCI_EXP_DEVCTL_EXT_TAG);
2177  		}
2178  		return 0;
2179  	}
2180  
2181  	if (!(ctl & PCI_EXP_DEVCTL_EXT_TAG)) {
2182  		pci_info(dev, "enabling Extended Tags\n");
2183  		pcie_capability_set_word(dev, PCI_EXP_DEVCTL,
2184  					 PCI_EXP_DEVCTL_EXT_TAG);
2185  	}
2186  	return 0;
2187  }
2188  
2189  /**
2190   * pcie_relaxed_ordering_enabled - Probe for PCIe relaxed ordering enable
2191   * @dev: PCI device to query
2192   *
2193   * Returns true if the device has enabled relaxed ordering attribute.
2194   */
pcie_relaxed_ordering_enabled(struct pci_dev * dev)2195  bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)
2196  {
2197  	u16 v;
2198  
2199  	pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &v);
2200  
2201  	return !!(v & PCI_EXP_DEVCTL_RELAX_EN);
2202  }
2203  EXPORT_SYMBOL(pcie_relaxed_ordering_enabled);
2204  
pci_configure_relaxed_ordering(struct pci_dev * dev)2205  static void pci_configure_relaxed_ordering(struct pci_dev *dev)
2206  {
2207  	struct pci_dev *root;
2208  
2209  	/* PCI_EXP_DEVCTL_RELAX_EN is RsvdP in VFs */
2210  	if (dev->is_virtfn)
2211  		return;
2212  
2213  	if (!pcie_relaxed_ordering_enabled(dev))
2214  		return;
2215  
2216  	/*
2217  	 * For now, we only deal with Relaxed Ordering issues with Root
2218  	 * Ports. Peer-to-Peer DMA is another can of worms.
2219  	 */
2220  	root = pcie_find_root_port(dev);
2221  	if (!root)
2222  		return;
2223  
2224  	if (root->dev_flags & PCI_DEV_FLAGS_NO_RELAXED_ORDERING) {
2225  		pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
2226  					   PCI_EXP_DEVCTL_RELAX_EN);
2227  		pci_info(dev, "Relaxed Ordering disabled because the Root Port didn't support it\n");
2228  	}
2229  }
2230  
pci_configure_eetlp_prefix(struct pci_dev * dev)2231  static void pci_configure_eetlp_prefix(struct pci_dev *dev)
2232  {
2233  #ifdef CONFIG_PCI_PASID
2234  	struct pci_dev *bridge;
2235  	int pcie_type;
2236  	u32 cap;
2237  
2238  	if (!pci_is_pcie(dev))
2239  		return;
2240  
2241  	pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap);
2242  	if (!(cap & PCI_EXP_DEVCAP2_EE_PREFIX))
2243  		return;
2244  
2245  	pcie_type = pci_pcie_type(dev);
2246  	if (pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
2247  	    pcie_type == PCI_EXP_TYPE_RC_END)
2248  		dev->eetlp_prefix_path = 1;
2249  	else {
2250  		bridge = pci_upstream_bridge(dev);
2251  		if (bridge && bridge->eetlp_prefix_path)
2252  			dev->eetlp_prefix_path = 1;
2253  	}
2254  #endif
2255  }
2256  
pci_configure_serr(struct pci_dev * dev)2257  static void pci_configure_serr(struct pci_dev *dev)
2258  {
2259  	u16 control;
2260  
2261  	if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
2262  
2263  		/*
2264  		 * A bridge will not forward ERR_ messages coming from an
2265  		 * endpoint unless SERR# forwarding is enabled.
2266  		 */
2267  		pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &control);
2268  		if (!(control & PCI_BRIDGE_CTL_SERR)) {
2269  			control |= PCI_BRIDGE_CTL_SERR;
2270  			pci_write_config_word(dev, PCI_BRIDGE_CONTROL, control);
2271  		}
2272  	}
2273  }
2274  
pci_configure_device(struct pci_dev * dev)2275  static void pci_configure_device(struct pci_dev *dev)
2276  {
2277  	pci_configure_mps(dev);
2278  	pci_configure_extended_tags(dev, NULL);
2279  	pci_configure_relaxed_ordering(dev);
2280  	pci_configure_ltr(dev);
2281  	pci_configure_aspm_l1ss(dev);
2282  	pci_configure_eetlp_prefix(dev);
2283  	pci_configure_serr(dev);
2284  
2285  	pci_acpi_program_hp_params(dev);
2286  }
2287  
pci_release_capabilities(struct pci_dev * dev)2288  static void pci_release_capabilities(struct pci_dev *dev)
2289  {
2290  	pci_aer_exit(dev);
2291  	pci_rcec_exit(dev);
2292  	pci_iov_release(dev);
2293  	pci_free_cap_save_buffers(dev);
2294  }
2295  
2296  /**
2297   * pci_release_dev - Free a PCI device structure when all users of it are
2298   *		     finished
2299   * @dev: device that's been disconnected
2300   *
2301   * Will be called only by the device core when all users of this PCI device are
2302   * done.
2303   */
pci_release_dev(struct device * dev)2304  static void pci_release_dev(struct device *dev)
2305  {
2306  	struct pci_dev *pci_dev;
2307  
2308  	pci_dev = to_pci_dev(dev);
2309  	pci_release_capabilities(pci_dev);
2310  	pci_release_of_node(pci_dev);
2311  	pcibios_release_device(pci_dev);
2312  	pci_bus_put(pci_dev->bus);
2313  	kfree(pci_dev->driver_override);
2314  	bitmap_free(pci_dev->dma_alias_mask);
2315  	dev_dbg(dev, "device released\n");
2316  	kfree(pci_dev);
2317  }
2318  
2319  static const struct device_type pci_dev_type = {
2320  	.groups = pci_dev_attr_groups,
2321  };
2322  
pci_alloc_dev(struct pci_bus * bus)2323  struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
2324  {
2325  	struct pci_dev *dev;
2326  
2327  	dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
2328  	if (!dev)
2329  		return NULL;
2330  
2331  	INIT_LIST_HEAD(&dev->bus_list);
2332  	dev->dev.type = &pci_dev_type;
2333  	dev->bus = pci_bus_get(bus);
2334  	dev->driver_exclusive_resource = (struct resource) {
2335  		.name = "PCI Exclusive",
2336  		.start = 0,
2337  		.end = -1,
2338  	};
2339  
2340  	spin_lock_init(&dev->pcie_cap_lock);
2341  #ifdef CONFIG_PCI_MSI
2342  	raw_spin_lock_init(&dev->msi_lock);
2343  #endif
2344  	return dev;
2345  }
2346  EXPORT_SYMBOL(pci_alloc_dev);
2347  
pci_bus_wait_rrs(struct pci_bus * bus,int devfn,u32 * l,int timeout)2348  static bool pci_bus_wait_rrs(struct pci_bus *bus, int devfn, u32 *l,
2349  			     int timeout)
2350  {
2351  	int delay = 1;
2352  
2353  	if (!pci_bus_rrs_vendor_id(*l))
2354  		return true;	/* not a Configuration RRS completion */
2355  
2356  	if (!timeout)
2357  		return false;	/* RRS, but caller doesn't want to wait */
2358  
2359  	/*
2360  	 * We got the reserved Vendor ID that indicates a completion with
2361  	 * Configuration Request Retry Status (RRS).  Retry until we get a
2362  	 * valid Vendor ID or we time out.
2363  	 */
2364  	while (pci_bus_rrs_vendor_id(*l)) {
2365  		if (delay > timeout) {
2366  			pr_warn("pci %04x:%02x:%02x.%d: not ready after %dms; giving up\n",
2367  				pci_domain_nr(bus), bus->number,
2368  				PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2369  
2370  			return false;
2371  		}
2372  		if (delay >= 1000)
2373  			pr_info("pci %04x:%02x:%02x.%d: not ready after %dms; waiting\n",
2374  				pci_domain_nr(bus), bus->number,
2375  				PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2376  
2377  		msleep(delay);
2378  		delay *= 2;
2379  
2380  		if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
2381  			return false;
2382  	}
2383  
2384  	if (delay >= 1000)
2385  		pr_info("pci %04x:%02x:%02x.%d: ready after %dms\n",
2386  			pci_domain_nr(bus), bus->number,
2387  			PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2388  
2389  	return true;
2390  }
2391  
pci_bus_generic_read_dev_vendor_id(struct pci_bus * bus,int devfn,u32 * l,int timeout)2392  bool pci_bus_generic_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
2393  					int timeout)
2394  {
2395  	if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
2396  		return false;
2397  
2398  	/* Some broken boards return 0 or ~0 (PCI_ERROR_RESPONSE) if a slot is empty: */
2399  	if (PCI_POSSIBLE_ERROR(*l) || *l == 0x00000000 ||
2400  	    *l == 0x0000ffff || *l == 0xffff0000)
2401  		return false;
2402  
2403  	if (pci_bus_rrs_vendor_id(*l))
2404  		return pci_bus_wait_rrs(bus, devfn, l, timeout);
2405  
2406  	return true;
2407  }
2408  
pci_bus_read_dev_vendor_id(struct pci_bus * bus,int devfn,u32 * l,int timeout)2409  bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
2410  				int timeout)
2411  {
2412  #ifdef CONFIG_PCI_QUIRKS
2413  	struct pci_dev *bridge = bus->self;
2414  
2415  	/*
2416  	 * Certain IDT switches have an issue where they improperly trigger
2417  	 * ACS Source Validation errors on completions for config reads.
2418  	 */
2419  	if (bridge && bridge->vendor == PCI_VENDOR_ID_IDT &&
2420  	    bridge->device == 0x80b5)
2421  		return pci_idt_bus_quirk(bus, devfn, l, timeout);
2422  #endif
2423  
2424  	return pci_bus_generic_read_dev_vendor_id(bus, devfn, l, timeout);
2425  }
2426  EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
2427  
2428  /*
2429   * Read the config data for a PCI device, sanity-check it,
2430   * and fill in the dev structure.
2431   */
pci_scan_device(struct pci_bus * bus,int devfn)2432  static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
2433  {
2434  	struct pci_dev *dev;
2435  	u32 l;
2436  
2437  	if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000))
2438  		return NULL;
2439  
2440  	dev = pci_alloc_dev(bus);
2441  	if (!dev)
2442  		return NULL;
2443  
2444  	dev->devfn = devfn;
2445  	dev->vendor = l & 0xffff;
2446  	dev->device = (l >> 16) & 0xffff;
2447  
2448  	if (pci_setup_device(dev)) {
2449  		pci_bus_put(dev->bus);
2450  		kfree(dev);
2451  		return NULL;
2452  	}
2453  
2454  	return dev;
2455  }
2456  
pcie_report_downtraining(struct pci_dev * dev)2457  void pcie_report_downtraining(struct pci_dev *dev)
2458  {
2459  	if (!pci_is_pcie(dev))
2460  		return;
2461  
2462  	/* Look from the device up to avoid downstream ports with no devices */
2463  	if ((pci_pcie_type(dev) != PCI_EXP_TYPE_ENDPOINT) &&
2464  	    (pci_pcie_type(dev) != PCI_EXP_TYPE_LEG_END) &&
2465  	    (pci_pcie_type(dev) != PCI_EXP_TYPE_UPSTREAM))
2466  		return;
2467  
2468  	/* Multi-function PCIe devices share the same link/status */
2469  	if (PCI_FUNC(dev->devfn) != 0 || dev->is_virtfn)
2470  		return;
2471  
2472  	/* Print link status only if the device is constrained by the fabric */
2473  	__pcie_print_link_status(dev, false);
2474  }
2475  
pci_init_capabilities(struct pci_dev * dev)2476  static void pci_init_capabilities(struct pci_dev *dev)
2477  {
2478  	pci_ea_init(dev);		/* Enhanced Allocation */
2479  	pci_msi_init(dev);		/* Disable MSI */
2480  	pci_msix_init(dev);		/* Disable MSI-X */
2481  
2482  	/* Buffers for saving PCIe and PCI-X capabilities */
2483  	pci_allocate_cap_save_buffers(dev);
2484  
2485  	pci_pm_init(dev);		/* Power Management */
2486  	pci_vpd_init(dev);		/* Vital Product Data */
2487  	pci_configure_ari(dev);		/* Alternative Routing-ID Forwarding */
2488  	pci_iov_init(dev);		/* Single Root I/O Virtualization */
2489  	pci_ats_init(dev);		/* Address Translation Services */
2490  	pci_pri_init(dev);		/* Page Request Interface */
2491  	pci_pasid_init(dev);		/* Process Address Space ID */
2492  	pci_acs_init(dev);		/* Access Control Services */
2493  	pci_ptm_init(dev);		/* Precision Time Measurement */
2494  	pci_aer_init(dev);		/* Advanced Error Reporting */
2495  	pci_dpc_init(dev);		/* Downstream Port Containment */
2496  	pci_rcec_init(dev);		/* Root Complex Event Collector */
2497  	pci_doe_init(dev);		/* Data Object Exchange */
2498  
2499  	pcie_report_downtraining(dev);
2500  	pci_init_reset_methods(dev);
2501  }
2502  
2503  /*
2504   * This is the equivalent of pci_host_bridge_msi_domain() that acts on
2505   * devices. Firmware interfaces that can select the MSI domain on a
2506   * per-device basis should be called from here.
2507   */
pci_dev_msi_domain(struct pci_dev * dev)2508  static struct irq_domain *pci_dev_msi_domain(struct pci_dev *dev)
2509  {
2510  	struct irq_domain *d;
2511  
2512  	/*
2513  	 * If a domain has been set through the pcibios_device_add()
2514  	 * callback, then this is the one (platform code knows best).
2515  	 */
2516  	d = dev_get_msi_domain(&dev->dev);
2517  	if (d)
2518  		return d;
2519  
2520  	/*
2521  	 * Let's see if we have a firmware interface able to provide
2522  	 * the domain.
2523  	 */
2524  	d = pci_msi_get_device_domain(dev);
2525  	if (d)
2526  		return d;
2527  
2528  	return NULL;
2529  }
2530  
pci_set_msi_domain(struct pci_dev * dev)2531  static void pci_set_msi_domain(struct pci_dev *dev)
2532  {
2533  	struct irq_domain *d;
2534  
2535  	/*
2536  	 * If the platform or firmware interfaces cannot supply a
2537  	 * device-specific MSI domain, then inherit the default domain
2538  	 * from the host bridge itself.
2539  	 */
2540  	d = pci_dev_msi_domain(dev);
2541  	if (!d)
2542  		d = dev_get_msi_domain(&dev->bus->dev);
2543  
2544  	dev_set_msi_domain(&dev->dev, d);
2545  }
2546  
pci_device_add(struct pci_dev * dev,struct pci_bus * bus)2547  void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
2548  {
2549  	int ret;
2550  
2551  	pci_configure_device(dev);
2552  
2553  	device_initialize(&dev->dev);
2554  	dev->dev.release = pci_release_dev;
2555  
2556  	set_dev_node(&dev->dev, pcibus_to_node(bus));
2557  	dev->dev.dma_mask = &dev->dma_mask;
2558  	dev->dev.dma_parms = &dev->dma_parms;
2559  	dev->dev.coherent_dma_mask = 0xffffffffull;
2560  
2561  	dma_set_max_seg_size(&dev->dev, 65536);
2562  	dma_set_seg_boundary(&dev->dev, 0xffffffff);
2563  
2564  	pcie_failed_link_retrain(dev);
2565  
2566  	/* Fix up broken headers */
2567  	pci_fixup_device(pci_fixup_header, dev);
2568  
2569  	pci_reassigndev_resource_alignment(dev);
2570  
2571  	dev->state_saved = false;
2572  
2573  	pci_init_capabilities(dev);
2574  
2575  	/*
2576  	 * Add the device to our list of discovered devices
2577  	 * and the bus list for fixup functions, etc.
2578  	 */
2579  	down_write(&pci_bus_sem);
2580  	list_add_tail(&dev->bus_list, &bus->devices);
2581  	up_write(&pci_bus_sem);
2582  
2583  	ret = pcibios_device_add(dev);
2584  	WARN_ON(ret < 0);
2585  
2586  	/* Set up MSI IRQ domain */
2587  	pci_set_msi_domain(dev);
2588  
2589  	/* Notifier could use PCI capabilities */
2590  	dev->match_driver = false;
2591  	ret = device_add(&dev->dev);
2592  	WARN_ON(ret < 0);
2593  
2594  	pci_npem_create(dev);
2595  }
2596  
pci_scan_single_device(struct pci_bus * bus,int devfn)2597  struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn)
2598  {
2599  	struct pci_dev *dev;
2600  
2601  	dev = pci_get_slot(bus, devfn);
2602  	if (dev) {
2603  		pci_dev_put(dev);
2604  		return dev;
2605  	}
2606  
2607  	dev = pci_scan_device(bus, devfn);
2608  	if (!dev)
2609  		return NULL;
2610  
2611  	pci_device_add(dev, bus);
2612  
2613  	return dev;
2614  }
2615  EXPORT_SYMBOL(pci_scan_single_device);
2616  
next_ari_fn(struct pci_bus * bus,struct pci_dev * dev,int fn)2617  static int next_ari_fn(struct pci_bus *bus, struct pci_dev *dev, int fn)
2618  {
2619  	int pos;
2620  	u16 cap = 0;
2621  	unsigned int next_fn;
2622  
2623  	if (!dev)
2624  		return -ENODEV;
2625  
2626  	pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
2627  	if (!pos)
2628  		return -ENODEV;
2629  
2630  	pci_read_config_word(dev, pos + PCI_ARI_CAP, &cap);
2631  	next_fn = PCI_ARI_CAP_NFN(cap);
2632  	if (next_fn <= fn)
2633  		return -ENODEV;	/* protect against malformed list */
2634  
2635  	return next_fn;
2636  }
2637  
next_fn(struct pci_bus * bus,struct pci_dev * dev,int fn)2638  static int next_fn(struct pci_bus *bus, struct pci_dev *dev, int fn)
2639  {
2640  	if (pci_ari_enabled(bus))
2641  		return next_ari_fn(bus, dev, fn);
2642  
2643  	if (fn >= 7)
2644  		return -ENODEV;
2645  	/* only multifunction devices may have more functions */
2646  	if (dev && !dev->multifunction)
2647  		return -ENODEV;
2648  
2649  	return fn + 1;
2650  }
2651  
only_one_child(struct pci_bus * bus)2652  static int only_one_child(struct pci_bus *bus)
2653  {
2654  	struct pci_dev *bridge = bus->self;
2655  
2656  	/*
2657  	 * Systems with unusual topologies set PCI_SCAN_ALL_PCIE_DEVS so
2658  	 * we scan for all possible devices, not just Device 0.
2659  	 */
2660  	if (pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS))
2661  		return 0;
2662  
2663  	/*
2664  	 * A PCIe Downstream Port normally leads to a Link with only Device
2665  	 * 0 on it (PCIe spec r3.1, sec 7.3.1).  As an optimization, scan
2666  	 * only for Device 0 in that situation.
2667  	 */
2668  	if (bridge && pci_is_pcie(bridge) && pcie_downstream_port(bridge))
2669  		return 1;
2670  
2671  	return 0;
2672  }
2673  
2674  /**
2675   * pci_scan_slot - Scan a PCI slot on a bus for devices
2676   * @bus: PCI bus to scan
2677   * @devfn: slot number to scan (must have zero function)
2678   *
2679   * Scan a PCI slot on the specified PCI bus for devices, adding
2680   * discovered devices to the @bus->devices list.  New devices
2681   * will not have is_added set.
2682   *
2683   * Returns the number of new devices found.
2684   */
pci_scan_slot(struct pci_bus * bus,int devfn)2685  int pci_scan_slot(struct pci_bus *bus, int devfn)
2686  {
2687  	struct pci_dev *dev;
2688  	int fn = 0, nr = 0;
2689  
2690  	if (only_one_child(bus) && (devfn > 0))
2691  		return 0; /* Already scanned the entire slot */
2692  
2693  	do {
2694  		dev = pci_scan_single_device(bus, devfn + fn);
2695  		if (dev) {
2696  			if (!pci_dev_is_added(dev))
2697  				nr++;
2698  			if (fn > 0)
2699  				dev->multifunction = 1;
2700  		} else if (fn == 0) {
2701  			/*
2702  			 * Function 0 is required unless we are running on
2703  			 * a hypervisor that passes through individual PCI
2704  			 * functions.
2705  			 */
2706  			if (!hypervisor_isolated_pci_functions())
2707  				break;
2708  		}
2709  		fn = next_fn(bus, dev, fn);
2710  	} while (fn >= 0);
2711  
2712  	/* Only one slot has PCIe device */
2713  	if (bus->self && nr)
2714  		pcie_aspm_init_link_state(bus->self);
2715  
2716  	return nr;
2717  }
2718  EXPORT_SYMBOL(pci_scan_slot);
2719  
pcie_find_smpss(struct pci_dev * dev,void * data)2720  static int pcie_find_smpss(struct pci_dev *dev, void *data)
2721  {
2722  	u8 *smpss = data;
2723  
2724  	if (!pci_is_pcie(dev))
2725  		return 0;
2726  
2727  	/*
2728  	 * We don't have a way to change MPS settings on devices that have
2729  	 * drivers attached.  A hot-added device might support only the minimum
2730  	 * MPS setting (MPS=128).  Therefore, if the fabric contains a bridge
2731  	 * where devices may be hot-added, we limit the fabric MPS to 128 so
2732  	 * hot-added devices will work correctly.
2733  	 *
2734  	 * However, if we hot-add a device to a slot directly below a Root
2735  	 * Port, it's impossible for there to be other existing devices below
2736  	 * the port.  We don't limit the MPS in this case because we can
2737  	 * reconfigure MPS on both the Root Port and the hot-added device,
2738  	 * and there are no other devices involved.
2739  	 *
2740  	 * Note that this PCIE_BUS_SAFE path assumes no peer-to-peer DMA.
2741  	 */
2742  	if (dev->is_hotplug_bridge &&
2743  	    pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT)
2744  		*smpss = 0;
2745  
2746  	if (*smpss > dev->pcie_mpss)
2747  		*smpss = dev->pcie_mpss;
2748  
2749  	return 0;
2750  }
2751  
pcie_write_mps(struct pci_dev * dev,int mps)2752  static void pcie_write_mps(struct pci_dev *dev, int mps)
2753  {
2754  	int rc;
2755  
2756  	if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
2757  		mps = 128 << dev->pcie_mpss;
2758  
2759  		if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT &&
2760  		    dev->bus->self)
2761  
2762  			/*
2763  			 * For "Performance", the assumption is made that
2764  			 * downstream communication will never be larger than
2765  			 * the MRRS.  So, the MPS only needs to be configured
2766  			 * for the upstream communication.  This being the case,
2767  			 * walk from the top down and set the MPS of the child
2768  			 * to that of the parent bus.
2769  			 *
2770  			 * Configure the device MPS with the smaller of the
2771  			 * device MPSS or the bridge MPS (which is assumed to be
2772  			 * properly configured at this point to the largest
2773  			 * allowable MPS based on its parent bus).
2774  			 */
2775  			mps = min(mps, pcie_get_mps(dev->bus->self));
2776  	}
2777  
2778  	rc = pcie_set_mps(dev, mps);
2779  	if (rc)
2780  		pci_err(dev, "Failed attempting to set the MPS\n");
2781  }
2782  
pcie_write_mrrs(struct pci_dev * dev)2783  static void pcie_write_mrrs(struct pci_dev *dev)
2784  {
2785  	int rc, mrrs;
2786  
2787  	/*
2788  	 * In the "safe" case, do not configure the MRRS.  There appear to be
2789  	 * issues with setting MRRS to 0 on a number of devices.
2790  	 */
2791  	if (pcie_bus_config != PCIE_BUS_PERFORMANCE)
2792  		return;
2793  
2794  	/*
2795  	 * For max performance, the MRRS must be set to the largest supported
2796  	 * value.  However, it cannot be configured larger than the MPS the
2797  	 * device or the bus can support.  This should already be properly
2798  	 * configured by a prior call to pcie_write_mps().
2799  	 */
2800  	mrrs = pcie_get_mps(dev);
2801  
2802  	/*
2803  	 * MRRS is a R/W register.  Invalid values can be written, but a
2804  	 * subsequent read will verify if the value is acceptable or not.
2805  	 * If the MRRS value provided is not acceptable (e.g., too large),
2806  	 * shrink the value until it is acceptable to the HW.
2807  	 */
2808  	while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
2809  		rc = pcie_set_readrq(dev, mrrs);
2810  		if (!rc)
2811  			break;
2812  
2813  		pci_warn(dev, "Failed attempting to set the MRRS\n");
2814  		mrrs /= 2;
2815  	}
2816  
2817  	if (mrrs < 128)
2818  		pci_err(dev, "MRRS was unable to be configured with a safe value.  If problems are experienced, try running with pci=pcie_bus_safe\n");
2819  }
2820  
pcie_bus_configure_set(struct pci_dev * dev,void * data)2821  static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
2822  {
2823  	int mps, orig_mps;
2824  
2825  	if (!pci_is_pcie(dev))
2826  		return 0;
2827  
2828  	if (pcie_bus_config == PCIE_BUS_TUNE_OFF ||
2829  	    pcie_bus_config == PCIE_BUS_DEFAULT)
2830  		return 0;
2831  
2832  	mps = 128 << *(u8 *)data;
2833  	orig_mps = pcie_get_mps(dev);
2834  
2835  	pcie_write_mps(dev, mps);
2836  	pcie_write_mrrs(dev);
2837  
2838  	pci_info(dev, "Max Payload Size set to %4d/%4d (was %4d), Max Read Rq %4d\n",
2839  		 pcie_get_mps(dev), 128 << dev->pcie_mpss,
2840  		 orig_mps, pcie_get_readrq(dev));
2841  
2842  	return 0;
2843  }
2844  
2845  /*
2846   * pcie_bus_configure_settings() requires that pci_walk_bus work in a top-down,
2847   * parents then children fashion.  If this changes, then this code will not
2848   * work as designed.
2849   */
pcie_bus_configure_settings(struct pci_bus * bus)2850  void pcie_bus_configure_settings(struct pci_bus *bus)
2851  {
2852  	u8 smpss = 0;
2853  
2854  	if (!bus->self)
2855  		return;
2856  
2857  	if (!pci_is_pcie(bus->self))
2858  		return;
2859  
2860  	/*
2861  	 * FIXME - Peer to peer DMA is possible, though the endpoint would need
2862  	 * to be aware of the MPS of the destination.  To work around this,
2863  	 * simply force the MPS of the entire system to the smallest possible.
2864  	 */
2865  	if (pcie_bus_config == PCIE_BUS_PEER2PEER)
2866  		smpss = 0;
2867  
2868  	if (pcie_bus_config == PCIE_BUS_SAFE) {
2869  		smpss = bus->self->pcie_mpss;
2870  
2871  		pcie_find_smpss(bus->self, &smpss);
2872  		pci_walk_bus(bus, pcie_find_smpss, &smpss);
2873  	}
2874  
2875  	pcie_bus_configure_set(bus->self, &smpss);
2876  	pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
2877  }
2878  EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
2879  
2880  /*
2881   * Called after each bus is probed, but before its children are examined.  This
2882   * is marked as __weak because multiple architectures define it.
2883   */
pcibios_fixup_bus(struct pci_bus * bus)2884  void __weak pcibios_fixup_bus(struct pci_bus *bus)
2885  {
2886         /* nothing to do, expected to be removed in the future */
2887  }
2888  
2889  /**
2890   * pci_scan_child_bus_extend() - Scan devices below a bus
2891   * @bus: Bus to scan for devices
2892   * @available_buses: Total number of buses available (%0 does not try to
2893   *		     extend beyond the minimal)
2894   *
2895   * Scans devices below @bus including subordinate buses. Returns new
2896   * subordinate number including all the found devices. Passing
2897   * @available_buses causes the remaining bus space to be distributed
2898   * equally between hotplug-capable bridges to allow future extension of the
2899   * hierarchy.
2900   */
pci_scan_child_bus_extend(struct pci_bus * bus,unsigned int available_buses)2901  static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
2902  					      unsigned int available_buses)
2903  {
2904  	unsigned int used_buses, normal_bridges = 0, hotplug_bridges = 0;
2905  	unsigned int start = bus->busn_res.start;
2906  	unsigned int devfn, cmax, max = start;
2907  	struct pci_dev *dev;
2908  
2909  	dev_dbg(&bus->dev, "scanning bus\n");
2910  
2911  	/* Go find them, Rover! */
2912  	for (devfn = 0; devfn < 256; devfn += 8)
2913  		pci_scan_slot(bus, devfn);
2914  
2915  	/* Reserve buses for SR-IOV capability */
2916  	used_buses = pci_iov_bus_range(bus);
2917  	max += used_buses;
2918  
2919  	/*
2920  	 * After performing arch-dependent fixup of the bus, look behind
2921  	 * all PCI-to-PCI bridges on this bus.
2922  	 */
2923  	if (!bus->is_added) {
2924  		dev_dbg(&bus->dev, "fixups for bus\n");
2925  		pcibios_fixup_bus(bus);
2926  		bus->is_added = 1;
2927  	}
2928  
2929  	/*
2930  	 * Calculate how many hotplug bridges and normal bridges there
2931  	 * are on this bus. We will distribute the additional available
2932  	 * buses between hotplug bridges.
2933  	 */
2934  	for_each_pci_bridge(dev, bus) {
2935  		if (dev->is_hotplug_bridge)
2936  			hotplug_bridges++;
2937  		else
2938  			normal_bridges++;
2939  	}
2940  
2941  	/*
2942  	 * Scan bridges that are already configured. We don't touch them
2943  	 * unless they are misconfigured (which will be done in the second
2944  	 * scan below).
2945  	 */
2946  	for_each_pci_bridge(dev, bus) {
2947  		cmax = max;
2948  		max = pci_scan_bridge_extend(bus, dev, max, 0, 0);
2949  
2950  		/*
2951  		 * Reserve one bus for each bridge now to avoid extending
2952  		 * hotplug bridges too much during the second scan below.
2953  		 */
2954  		used_buses++;
2955  		if (max - cmax > 1)
2956  			used_buses += max - cmax - 1;
2957  	}
2958  
2959  	/* Scan bridges that need to be reconfigured */
2960  	for_each_pci_bridge(dev, bus) {
2961  		unsigned int buses = 0;
2962  
2963  		if (!hotplug_bridges && normal_bridges == 1) {
2964  			/*
2965  			 * There is only one bridge on the bus (upstream
2966  			 * port) so it gets all available buses which it
2967  			 * can then distribute to the possible hotplug
2968  			 * bridges below.
2969  			 */
2970  			buses = available_buses;
2971  		} else if (dev->is_hotplug_bridge) {
2972  			/*
2973  			 * Distribute the extra buses between hotplug
2974  			 * bridges if any.
2975  			 */
2976  			buses = available_buses / hotplug_bridges;
2977  			buses = min(buses, available_buses - used_buses + 1);
2978  		}
2979  
2980  		cmax = max;
2981  		max = pci_scan_bridge_extend(bus, dev, cmax, buses, 1);
2982  		/* One bus is already accounted so don't add it again */
2983  		if (max - cmax > 1)
2984  			used_buses += max - cmax - 1;
2985  	}
2986  
2987  	/*
2988  	 * Make sure a hotplug bridge has at least the minimum requested
2989  	 * number of buses but allow it to grow up to the maximum available
2990  	 * bus number if there is room.
2991  	 */
2992  	if (bus->self && bus->self->is_hotplug_bridge) {
2993  		used_buses = max_t(unsigned int, available_buses,
2994  				   pci_hotplug_bus_size - 1);
2995  		if (max - start < used_buses) {
2996  			max = start + used_buses;
2997  
2998  			/* Do not allocate more buses than we have room left */
2999  			if (max > bus->busn_res.end)
3000  				max = bus->busn_res.end;
3001  
3002  			dev_dbg(&bus->dev, "%pR extended by %#02x\n",
3003  				&bus->busn_res, max - start);
3004  		}
3005  	}
3006  
3007  	/*
3008  	 * We've scanned the bus and so we know all about what's on
3009  	 * the other side of any bridges that may be on this bus plus
3010  	 * any devices.
3011  	 *
3012  	 * Return how far we've got finding sub-buses.
3013  	 */
3014  	dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
3015  	return max;
3016  }
3017  
3018  /**
3019   * pci_scan_child_bus() - Scan devices below a bus
3020   * @bus: Bus to scan for devices
3021   *
3022   * Scans devices below @bus including subordinate buses. Returns new
3023   * subordinate number including all the found devices.
3024   */
pci_scan_child_bus(struct pci_bus * bus)3025  unsigned int pci_scan_child_bus(struct pci_bus *bus)
3026  {
3027  	return pci_scan_child_bus_extend(bus, 0);
3028  }
3029  EXPORT_SYMBOL_GPL(pci_scan_child_bus);
3030  
3031  /**
3032   * pcibios_root_bridge_prepare - Platform-specific host bridge setup
3033   * @bridge: Host bridge to set up
3034   *
3035   * Default empty implementation.  Replace with an architecture-specific setup
3036   * routine, if necessary.
3037   */
pcibios_root_bridge_prepare(struct pci_host_bridge * bridge)3038  int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
3039  {
3040  	return 0;
3041  }
3042  
pcibios_add_bus(struct pci_bus * bus)3043  void __weak pcibios_add_bus(struct pci_bus *bus)
3044  {
3045  }
3046  
pcibios_remove_bus(struct pci_bus * bus)3047  void __weak pcibios_remove_bus(struct pci_bus *bus)
3048  {
3049  }
3050  
pci_create_root_bus(struct device * parent,int bus,struct pci_ops * ops,void * sysdata,struct list_head * resources)3051  struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
3052  		struct pci_ops *ops, void *sysdata, struct list_head *resources)
3053  {
3054  	int error;
3055  	struct pci_host_bridge *bridge;
3056  
3057  	bridge = pci_alloc_host_bridge(0);
3058  	if (!bridge)
3059  		return NULL;
3060  
3061  	bridge->dev.parent = parent;
3062  
3063  	list_splice_init(resources, &bridge->windows);
3064  	bridge->sysdata = sysdata;
3065  	bridge->busnr = bus;
3066  	bridge->ops = ops;
3067  
3068  	error = pci_register_host_bridge(bridge);
3069  	if (error < 0)
3070  		goto err_out;
3071  
3072  	return bridge->bus;
3073  
3074  err_out:
3075  	put_device(&bridge->dev);
3076  	return NULL;
3077  }
3078  EXPORT_SYMBOL_GPL(pci_create_root_bus);
3079  
pci_host_probe(struct pci_host_bridge * bridge)3080  int pci_host_probe(struct pci_host_bridge *bridge)
3081  {
3082  	struct pci_bus *bus, *child;
3083  	int ret;
3084  
3085  	pci_lock_rescan_remove();
3086  	ret = pci_scan_root_bus_bridge(bridge);
3087  	pci_unlock_rescan_remove();
3088  	if (ret < 0) {
3089  		dev_err(bridge->dev.parent, "Scanning root bridge failed");
3090  		return ret;
3091  	}
3092  
3093  	bus = bridge->bus;
3094  
3095  	/* If we must preserve the resource configuration, claim now */
3096  	if (bridge->preserve_config)
3097  		pci_bus_claim_resources(bus);
3098  
3099  	/*
3100  	 * Assign whatever was left unassigned. If we didn't claim above,
3101  	 * this will reassign everything.
3102  	 */
3103  	pci_assign_unassigned_root_bus_resources(bus);
3104  
3105  	list_for_each_entry(child, &bus->children, node)
3106  		pcie_bus_configure_settings(child);
3107  
3108  	pci_lock_rescan_remove();
3109  	pci_bus_add_devices(bus);
3110  	pci_unlock_rescan_remove();
3111  	return 0;
3112  }
3113  EXPORT_SYMBOL_GPL(pci_host_probe);
3114  
pci_bus_insert_busn_res(struct pci_bus * b,int bus,int bus_max)3115  int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
3116  {
3117  	struct resource *res = &b->busn_res;
3118  	struct resource *parent_res, *conflict;
3119  
3120  	res->start = bus;
3121  	res->end = bus_max;
3122  	res->flags = IORESOURCE_BUS;
3123  
3124  	if (!pci_is_root_bus(b))
3125  		parent_res = &b->parent->busn_res;
3126  	else {
3127  		parent_res = get_pci_domain_busn_res(pci_domain_nr(b));
3128  		res->flags |= IORESOURCE_PCI_FIXED;
3129  	}
3130  
3131  	conflict = request_resource_conflict(parent_res, res);
3132  
3133  	if (conflict)
3134  		dev_info(&b->dev,
3135  			   "busn_res: can not insert %pR under %s%pR (conflicts with %s %pR)\n",
3136  			    res, pci_is_root_bus(b) ? "domain " : "",
3137  			    parent_res, conflict->name, conflict);
3138  
3139  	return conflict == NULL;
3140  }
3141  
pci_bus_update_busn_res_end(struct pci_bus * b,int bus_max)3142  int pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
3143  {
3144  	struct resource *res = &b->busn_res;
3145  	struct resource old_res = *res;
3146  	resource_size_t size;
3147  	int ret;
3148  
3149  	if (res->start > bus_max)
3150  		return -EINVAL;
3151  
3152  	size = bus_max - res->start + 1;
3153  	ret = adjust_resource(res, res->start, size);
3154  	dev_info(&b->dev, "busn_res: %pR end %s updated to %02x\n",
3155  			&old_res, ret ? "can not be" : "is", bus_max);
3156  
3157  	if (!ret && !res->parent)
3158  		pci_bus_insert_busn_res(b, res->start, res->end);
3159  
3160  	return ret;
3161  }
3162  
pci_bus_release_busn_res(struct pci_bus * b)3163  void pci_bus_release_busn_res(struct pci_bus *b)
3164  {
3165  	struct resource *res = &b->busn_res;
3166  	int ret;
3167  
3168  	if (!res->flags || !res->parent)
3169  		return;
3170  
3171  	ret = release_resource(res);
3172  	dev_info(&b->dev, "busn_res: %pR %s released\n",
3173  			res, ret ? "can not be" : "is");
3174  }
3175  
pci_scan_root_bus_bridge(struct pci_host_bridge * bridge)3176  int pci_scan_root_bus_bridge(struct pci_host_bridge *bridge)
3177  {
3178  	struct resource_entry *window;
3179  	bool found = false;
3180  	struct pci_bus *b;
3181  	int max, bus, ret;
3182  
3183  	if (!bridge)
3184  		return -EINVAL;
3185  
3186  	resource_list_for_each_entry(window, &bridge->windows)
3187  		if (window->res->flags & IORESOURCE_BUS) {
3188  			bridge->busnr = window->res->start;
3189  			found = true;
3190  			break;
3191  		}
3192  
3193  	ret = pci_register_host_bridge(bridge);
3194  	if (ret < 0)
3195  		return ret;
3196  
3197  	b = bridge->bus;
3198  	bus = bridge->busnr;
3199  
3200  	if (!found) {
3201  		dev_info(&b->dev,
3202  		 "No busn resource found for root bus, will use [bus %02x-ff]\n",
3203  			bus);
3204  		pci_bus_insert_busn_res(b, bus, 255);
3205  	}
3206  
3207  	max = pci_scan_child_bus(b);
3208  
3209  	if (!found)
3210  		pci_bus_update_busn_res_end(b, max);
3211  
3212  	return 0;
3213  }
3214  EXPORT_SYMBOL(pci_scan_root_bus_bridge);
3215  
pci_scan_root_bus(struct device * parent,int bus,struct pci_ops * ops,void * sysdata,struct list_head * resources)3216  struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
3217  		struct pci_ops *ops, void *sysdata, struct list_head *resources)
3218  {
3219  	struct resource_entry *window;
3220  	bool found = false;
3221  	struct pci_bus *b;
3222  	int max;
3223  
3224  	resource_list_for_each_entry(window, resources)
3225  		if (window->res->flags & IORESOURCE_BUS) {
3226  			found = true;
3227  			break;
3228  		}
3229  
3230  	b = pci_create_root_bus(parent, bus, ops, sysdata, resources);
3231  	if (!b)
3232  		return NULL;
3233  
3234  	if (!found) {
3235  		dev_info(&b->dev,
3236  		 "No busn resource found for root bus, will use [bus %02x-ff]\n",
3237  			bus);
3238  		pci_bus_insert_busn_res(b, bus, 255);
3239  	}
3240  
3241  	max = pci_scan_child_bus(b);
3242  
3243  	if (!found)
3244  		pci_bus_update_busn_res_end(b, max);
3245  
3246  	return b;
3247  }
3248  EXPORT_SYMBOL(pci_scan_root_bus);
3249  
pci_scan_bus(int bus,struct pci_ops * ops,void * sysdata)3250  struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
3251  					void *sysdata)
3252  {
3253  	LIST_HEAD(resources);
3254  	struct pci_bus *b;
3255  
3256  	pci_add_resource(&resources, &ioport_resource);
3257  	pci_add_resource(&resources, &iomem_resource);
3258  	pci_add_resource(&resources, &busn_resource);
3259  	b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
3260  	if (b) {
3261  		pci_scan_child_bus(b);
3262  	} else {
3263  		pci_free_resource_list(&resources);
3264  	}
3265  	return b;
3266  }
3267  EXPORT_SYMBOL(pci_scan_bus);
3268  
3269  /**
3270   * pci_rescan_bus_bridge_resize - Scan a PCI bus for devices
3271   * @bridge: PCI bridge for the bus to scan
3272   *
3273   * Scan a PCI bus and child buses for new devices, add them,
3274   * and enable them, resizing bridge mmio/io resource if necessary
3275   * and possible.  The caller must ensure the child devices are already
3276   * removed for resizing to occur.
3277   *
3278   * Returns the max number of subordinate bus discovered.
3279   */
pci_rescan_bus_bridge_resize(struct pci_dev * bridge)3280  unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
3281  {
3282  	unsigned int max;
3283  	struct pci_bus *bus = bridge->subordinate;
3284  
3285  	max = pci_scan_child_bus(bus);
3286  
3287  	pci_assign_unassigned_bridge_resources(bridge);
3288  
3289  	pci_bus_add_devices(bus);
3290  
3291  	return max;
3292  }
3293  
3294  /**
3295   * pci_rescan_bus - Scan a PCI bus for devices
3296   * @bus: PCI bus to scan
3297   *
3298   * Scan a PCI bus and child buses for new devices, add them,
3299   * and enable them.
3300   *
3301   * Returns the max number of subordinate bus discovered.
3302   */
pci_rescan_bus(struct pci_bus * bus)3303  unsigned int pci_rescan_bus(struct pci_bus *bus)
3304  {
3305  	unsigned int max;
3306  
3307  	max = pci_scan_child_bus(bus);
3308  	pci_assign_unassigned_bus_resources(bus);
3309  	pci_bus_add_devices(bus);
3310  
3311  	return max;
3312  }
3313  EXPORT_SYMBOL_GPL(pci_rescan_bus);
3314  
3315  /*
3316   * pci_rescan_bus(), pci_rescan_bus_bridge_resize() and PCI device removal
3317   * routines should always be executed under this mutex.
3318   */
3319  static DEFINE_MUTEX(pci_rescan_remove_lock);
3320  
pci_lock_rescan_remove(void)3321  void pci_lock_rescan_remove(void)
3322  {
3323  	mutex_lock(&pci_rescan_remove_lock);
3324  }
3325  EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);
3326  
pci_unlock_rescan_remove(void)3327  void pci_unlock_rescan_remove(void)
3328  {
3329  	mutex_unlock(&pci_rescan_remove_lock);
3330  }
3331  EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);
3332  
pci_sort_bf_cmp(const struct device * d_a,const struct device * d_b)3333  static int __init pci_sort_bf_cmp(const struct device *d_a,
3334  				  const struct device *d_b)
3335  {
3336  	const struct pci_dev *a = to_pci_dev(d_a);
3337  	const struct pci_dev *b = to_pci_dev(d_b);
3338  
3339  	if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
3340  	else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
3341  
3342  	if      (a->bus->number < b->bus->number) return -1;
3343  	else if (a->bus->number > b->bus->number) return  1;
3344  
3345  	if      (a->devfn < b->devfn) return -1;
3346  	else if (a->devfn > b->devfn) return  1;
3347  
3348  	return 0;
3349  }
3350  
pci_sort_breadthfirst(void)3351  void __init pci_sort_breadthfirst(void)
3352  {
3353  	bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
3354  }
3355  
pci_hp_add_bridge(struct pci_dev * dev)3356  int pci_hp_add_bridge(struct pci_dev *dev)
3357  {
3358  	struct pci_bus *parent = dev->bus;
3359  	int busnr, start = parent->busn_res.start;
3360  	unsigned int available_buses = 0;
3361  	int end = parent->busn_res.end;
3362  
3363  	for (busnr = start; busnr <= end; busnr++) {
3364  		if (!pci_find_bus(pci_domain_nr(parent), busnr))
3365  			break;
3366  	}
3367  	if (busnr-- > end) {
3368  		pci_err(dev, "No bus number available for hot-added bridge\n");
3369  		return -1;
3370  	}
3371  
3372  	/* Scan bridges that are already configured */
3373  	busnr = pci_scan_bridge(parent, dev, busnr, 0);
3374  
3375  	/*
3376  	 * Distribute the available bus numbers between hotplug-capable
3377  	 * bridges to make extending the chain later possible.
3378  	 */
3379  	available_buses = end - busnr;
3380  
3381  	/* Scan bridges that need to be reconfigured */
3382  	pci_scan_bridge_extend(parent, dev, busnr, available_buses, 1);
3383  
3384  	if (!dev->subordinate)
3385  		return -1;
3386  
3387  	return 0;
3388  }
3389  EXPORT_SYMBOL_GPL(pci_hp_add_bridge);
3390