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