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, ®ion);
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, ®ion);
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, ®ion);
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, ®ion);
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, ®16);
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, ®32);
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, ®32);
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, ®ion);
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, ®ion);
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, ®ion);
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, ®ion);
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