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