Linux 6.14-rc1
[linux-stable.git] / drivers / pci / probe.c
blobb6536ed599c3727ebfc92697ee8d0906e8167902
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * PCI detection and setup code
4 */
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"
24 #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
25 #define CARDBUS_RESERVE_BUSNR 3
27 static struct resource busn_resource = {
28 .name = "PCI busn",
29 .start = 0,
30 .end = 255,
31 .flags = IORESOURCE_BUS,
34 /* Ugh. Need to stop exporting this to modules. */
35 LIST_HEAD(pci_root_buses);
36 EXPORT_SYMBOL(pci_root_buses);
38 static LIST_HEAD(pci_domain_busn_res_list);
40 struct pci_domain_busn_res {
41 struct list_head list;
42 struct resource res;
43 int domain_nr;
46 static struct resource *get_pci_domain_busn_res(int domain_nr)
48 struct pci_domain_busn_res *r;
50 list_for_each_entry(r, &pci_domain_busn_res_list, list)
51 if (r->domain_nr == domain_nr)
52 return &r->res;
54 r = kzalloc(sizeof(*r), GFP_KERNEL);
55 if (!r)
56 return NULL;
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;
63 list_add_tail(&r->list, &pci_domain_busn_res_list);
65 return &r->res;
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.
73 int no_pci_devices(void)
75 struct device *dev;
76 int no_devices;
78 dev = bus_find_next_device(&pci_bus_type, NULL);
79 no_devices = (dev == NULL);
80 put_device(dev);
81 return no_devices;
83 EXPORT_SYMBOL(no_pci_devices);
86 * PCI Bus Class
88 static void release_pcibus_dev(struct device *dev)
90 struct pci_bus *pci_bus = to_pci_bus(dev);
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);
98 static const struct class pcibus_class = {
99 .name = "pci_bus",
100 .dev_release = &release_pcibus_dev,
101 .dev_groups = pcibus_groups,
104 static int __init pcibus_class_init(void)
106 return class_register(&pcibus_class);
108 postcore_initcall(pcibus_class_init);
110 static u64 pci_size(u64 base, u64 maxbase, u64 mask)
112 u64 size = mask & maxbase; /* Find the significant bits */
113 if (!size)
114 return 0;
117 * Get the lowest of them to find the decode size, and from that
118 * the extent.
120 size = size & ~(size-1);
123 * base == maxbase can be valid only if the BAR has already been
124 * programmed with all 1s.
126 if (base == maxbase && ((base | (size - 1)) & mask) != mask)
127 return 0;
129 return size;
132 static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
134 u32 mem_type;
135 unsigned long flags;
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;
143 flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
144 flags |= IORESOURCE_MEM;
145 if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
146 flags |= IORESOURCE_PREFETCH;
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;
162 return flags;
165 #define PCI_COMMAND_DECODE_ENABLE (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)
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
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.
181 static void __pci_size_bars(struct pci_dev *dev, int count,
182 unsigned int pos, u32 *sizes, bool rom)
184 u32 orig, mask = rom ? PCI_ROM_ADDRESS_MASK : ~0;
185 int i;
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);
195 void __pci_size_stdbars(struct pci_dev *dev, int count,
196 unsigned int pos, u32 *sizes)
198 __pci_size_bars(dev, count, pos, sizes, false);
201 static void __pci_size_rom(struct pci_dev *dev, unsigned int pos, u32 *sizes)
203 __pci_size_bars(dev, 1, pos, sizes, true);
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
214 * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
216 int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
217 struct resource *res, unsigned int pos, u32 *sizes)
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);
224 res->name = pci_name(dev);
226 pci_read_config_dword(dev, pos, &l);
227 sz = sizes[0];
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.
235 if (PCI_POSSIBLE_ERROR(sz))
236 sz = 0;
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.
242 if (PCI_POSSIBLE_ERROR(l))
243 l = 0;
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;
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;
265 if (res->flags & IORESOURCE_MEM_64) {
266 pci_read_config_dword(dev, pos + 4, &l);
267 sz = sizes[1];
269 l64 |= ((u64)l << 32);
270 sz64 |= ((u64)sz << 32);
271 mask64 |= ((u64)~0 << 32);
274 if (!sz64)
275 goto fail;
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;
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;
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;
305 region.start = l64;
306 region.end = l64 + sz64 - 1;
308 pcibios_bus_to_resource(dev->bus, res, &region);
309 pcibios_resource_to_bus(dev->bus, &inverted_region, res);
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:
317 * resource_to_bus(bus_to_resource(A)) == A
319 * If it doesn't, CPU accesses to "bus_to_resource(A)" will not
320 * be claimed by the device.
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);
330 goto out;
333 fail:
334 res->flags = 0;
335 out:
336 if (res->flags)
337 pci_info(dev, "%s %pR\n", res_name, res);
339 return (res->flags & IORESOURCE_MEM_64) ? 1 : 0;
342 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
344 u32 rombar, stdbars[PCI_STD_NUM_BARS];
345 unsigned int pos, reg;
346 u16 orig_cmd;
348 BUILD_BUG_ON(howmany > PCI_STD_NUM_BARS);
350 if (dev->non_compliant_bars)
351 return;
353 /* Per PCIe r4.0, sec 9.3.4.1.11, the VF BARs are all RO Zero */
354 if (dev->is_virtfn)
355 return;
357 /* No printks while decoding is disabled! */
358 if (!dev->mmio_always_on) {
359 pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
360 if (orig_cmd & PCI_COMMAND_DECODE_ENABLE) {
361 pci_write_config_word(dev, PCI_COMMAND,
362 orig_cmd & ~PCI_COMMAND_DECODE_ENABLE);
366 __pci_size_stdbars(dev, howmany, PCI_BASE_ADDRESS_0, stdbars);
367 if (rom)
368 __pci_size_rom(dev, rom, &rombar);
370 if (!dev->mmio_always_on &&
371 (orig_cmd & PCI_COMMAND_DECODE_ENABLE))
372 pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
374 for (pos = 0; pos < howmany; pos++) {
375 struct resource *res = &dev->resource[pos];
376 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
377 pos += __pci_read_base(dev, pci_bar_unknown,
378 res, reg, &stdbars[pos]);
381 if (rom) {
382 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
383 dev->rom_base_reg = rom;
384 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
385 IORESOURCE_READONLY | IORESOURCE_SIZEALIGN;
386 __pci_read_base(dev, pci_bar_mem32, res, rom, &rombar);
390 static void pci_read_bridge_io(struct pci_dev *dev, struct resource *res,
391 bool log)
393 u8 io_base_lo, io_limit_lo;
394 unsigned long io_mask, io_granularity, base, limit;
395 struct pci_bus_region region;
397 io_mask = PCI_IO_RANGE_MASK;
398 io_granularity = 0x1000;
399 if (dev->io_window_1k) {
400 /* Support 1K I/O space granularity */
401 io_mask = PCI_IO_1K_RANGE_MASK;
402 io_granularity = 0x400;
405 pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
406 pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
407 base = (io_base_lo & io_mask) << 8;
408 limit = (io_limit_lo & io_mask) << 8;
410 if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
411 u16 io_base_hi, io_limit_hi;
413 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
414 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
415 base |= ((unsigned long) io_base_hi << 16);
416 limit |= ((unsigned long) io_limit_hi << 16);
419 if (base <= limit) {
420 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
421 region.start = base;
422 region.end = limit + io_granularity - 1;
423 pcibios_bus_to_resource(dev->bus, res, &region);
424 if (log)
425 pci_info(dev, " bridge window %pR\n", res);
429 static void pci_read_bridge_mmio(struct pci_dev *dev, struct resource *res,
430 bool log)
432 u16 mem_base_lo, mem_limit_lo;
433 unsigned long base, limit;
434 struct pci_bus_region region;
436 pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
437 pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
438 base = ((unsigned long) mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
439 limit = ((unsigned long) mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
440 if (base <= limit) {
441 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
442 region.start = base;
443 region.end = limit + 0xfffff;
444 pcibios_bus_to_resource(dev->bus, res, &region);
445 if (log)
446 pci_info(dev, " bridge window %pR\n", res);
450 static void pci_read_bridge_mmio_pref(struct pci_dev *dev, struct resource *res,
451 bool log)
453 u16 mem_base_lo, mem_limit_lo;
454 u64 base64, limit64;
455 pci_bus_addr_t base, limit;
456 struct pci_bus_region region;
458 pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
459 pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
460 base64 = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
461 limit64 = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
463 if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
464 u32 mem_base_hi, mem_limit_hi;
466 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
467 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
470 * Some bridges set the base > limit by default, and some
471 * (broken) BIOSes do not initialize them. If we find
472 * this, just assume they are not being used.
474 if (mem_base_hi <= mem_limit_hi) {
475 base64 |= (u64) mem_base_hi << 32;
476 limit64 |= (u64) mem_limit_hi << 32;
480 base = (pci_bus_addr_t) base64;
481 limit = (pci_bus_addr_t) limit64;
483 if (base != base64) {
484 pci_err(dev, "can't handle bridge window above 4GB (bus address %#010llx)\n",
485 (unsigned long long) base64);
486 return;
489 if (base <= limit) {
490 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
491 IORESOURCE_MEM | IORESOURCE_PREFETCH;
492 if (res->flags & PCI_PREF_RANGE_TYPE_64)
493 res->flags |= IORESOURCE_MEM_64;
494 region.start = base;
495 region.end = limit + 0xfffff;
496 pcibios_bus_to_resource(dev->bus, res, &region);
497 if (log)
498 pci_info(dev, " bridge window %pR\n", res);
502 static void pci_read_bridge_windows(struct pci_dev *bridge)
504 u32 buses;
505 u16 io;
506 u32 pmem, tmp;
507 struct resource res;
509 pci_read_config_dword(bridge, PCI_PRIMARY_BUS, &buses);
510 res.flags = IORESOURCE_BUS;
511 res.start = (buses >> 8) & 0xff;
512 res.end = (buses >> 16) & 0xff;
513 pci_info(bridge, "PCI bridge to %pR%s\n", &res,
514 bridge->transparent ? " (subtractive decode)" : "");
516 pci_read_config_word(bridge, PCI_IO_BASE, &io);
517 if (!io) {
518 pci_write_config_word(bridge, PCI_IO_BASE, 0xe0f0);
519 pci_read_config_word(bridge, PCI_IO_BASE, &io);
520 pci_write_config_word(bridge, PCI_IO_BASE, 0x0);
522 if (io) {
523 bridge->io_window = 1;
524 pci_read_bridge_io(bridge, &res, true);
527 pci_read_bridge_mmio(bridge, &res, true);
530 * DECchip 21050 pass 2 errata: the bridge may miss an address
531 * disconnect boundary by one PCI data phase. Workaround: do not
532 * use prefetching on this device.
534 if (bridge->vendor == PCI_VENDOR_ID_DEC && bridge->device == 0x0001)
535 return;
537 pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem);
538 if (!pmem) {
539 pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE,
540 0xffe0fff0);
541 pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem);
542 pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE, 0x0);
544 if (!pmem)
545 return;
547 bridge->pref_window = 1;
549 if ((pmem & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
552 * Bridge claims to have a 64-bit prefetchable memory
553 * window; verify that the upper bits are actually
554 * writable.
556 pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &pmem);
557 pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32,
558 0xffffffff);
559 pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &tmp);
560 pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32, pmem);
561 if (tmp)
562 bridge->pref_64_window = 1;
565 pci_read_bridge_mmio_pref(bridge, &res, true);
568 void pci_read_bridge_bases(struct pci_bus *child)
570 struct pci_dev *dev = child->self;
571 struct resource *res;
572 int i;
574 if (pci_is_root_bus(child)) /* It's a host bus, nothing to read */
575 return;
577 pci_info(dev, "PCI bridge to %pR%s\n",
578 &child->busn_res,
579 dev->transparent ? " (subtractive decode)" : "");
581 pci_bus_remove_resources(child);
582 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
583 child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
585 pci_read_bridge_io(child->self, child->resource[0], false);
586 pci_read_bridge_mmio(child->self, child->resource[1], false);
587 pci_read_bridge_mmio_pref(child->self, child->resource[2], false);
589 if (!dev->transparent)
590 return;
592 pci_bus_for_each_resource(child->parent, res) {
593 if (!res || !res->flags)
594 continue;
596 pci_bus_add_resource(child, res);
597 pci_info(dev, " bridge window %pR (subtractive decode)\n", res);
601 static struct pci_bus *pci_alloc_bus(struct pci_bus *parent)
603 struct pci_bus *b;
605 b = kzalloc(sizeof(*b), GFP_KERNEL);
606 if (!b)
607 return NULL;
609 INIT_LIST_HEAD(&b->node);
610 INIT_LIST_HEAD(&b->children);
611 INIT_LIST_HEAD(&b->devices);
612 INIT_LIST_HEAD(&b->slots);
613 INIT_LIST_HEAD(&b->resources);
614 b->max_bus_speed = PCI_SPEED_UNKNOWN;
615 b->cur_bus_speed = PCI_SPEED_UNKNOWN;
616 #ifdef CONFIG_PCI_DOMAINS_GENERIC
617 if (parent)
618 b->domain_nr = parent->domain_nr;
619 #endif
620 return b;
623 static void pci_release_host_bridge_dev(struct device *dev)
625 struct pci_host_bridge *bridge = to_pci_host_bridge(dev);
627 if (bridge->release_fn)
628 bridge->release_fn(bridge);
630 pci_free_resource_list(&bridge->windows);
631 pci_free_resource_list(&bridge->dma_ranges);
632 kfree(bridge);
635 static void pci_init_host_bridge(struct pci_host_bridge *bridge)
637 INIT_LIST_HEAD(&bridge->windows);
638 INIT_LIST_HEAD(&bridge->dma_ranges);
641 * We assume we can manage these PCIe features. Some systems may
642 * reserve these for use by the platform itself, e.g., an ACPI BIOS
643 * may implement its own AER handling and use _OSC to prevent the
644 * OS from interfering.
646 bridge->native_aer = 1;
647 bridge->native_pcie_hotplug = 1;
648 bridge->native_shpc_hotplug = 1;
649 bridge->native_pme = 1;
650 bridge->native_ltr = 1;
651 bridge->native_dpc = 1;
652 bridge->domain_nr = PCI_DOMAIN_NR_NOT_SET;
653 bridge->native_cxl_error = 1;
655 device_initialize(&bridge->dev);
658 struct pci_host_bridge *pci_alloc_host_bridge(size_t priv)
660 struct pci_host_bridge *bridge;
662 bridge = kzalloc(sizeof(*bridge) + priv, GFP_KERNEL);
663 if (!bridge)
664 return NULL;
666 pci_init_host_bridge(bridge);
667 bridge->dev.release = pci_release_host_bridge_dev;
669 return bridge;
671 EXPORT_SYMBOL(pci_alloc_host_bridge);
673 static void devm_pci_alloc_host_bridge_release(void *data)
675 pci_free_host_bridge(data);
678 struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev,
679 size_t priv)
681 int ret;
682 struct pci_host_bridge *bridge;
684 bridge = pci_alloc_host_bridge(priv);
685 if (!bridge)
686 return NULL;
688 bridge->dev.parent = dev;
690 ret = devm_add_action_or_reset(dev, devm_pci_alloc_host_bridge_release,
691 bridge);
692 if (ret)
693 return NULL;
695 ret = devm_of_pci_bridge_init(dev, bridge);
696 if (ret)
697 return NULL;
699 return bridge;
701 EXPORT_SYMBOL(devm_pci_alloc_host_bridge);
703 void pci_free_host_bridge(struct pci_host_bridge *bridge)
705 put_device(&bridge->dev);
707 EXPORT_SYMBOL(pci_free_host_bridge);
709 /* Indexed by PCI_X_SSTATUS_FREQ (secondary bus mode and frequency) */
710 static const unsigned char pcix_bus_speed[] = {
711 PCI_SPEED_UNKNOWN, /* 0 */
712 PCI_SPEED_66MHz_PCIX, /* 1 */
713 PCI_SPEED_100MHz_PCIX, /* 2 */
714 PCI_SPEED_133MHz_PCIX, /* 3 */
715 PCI_SPEED_UNKNOWN, /* 4 */
716 PCI_SPEED_66MHz_PCIX_ECC, /* 5 */
717 PCI_SPEED_100MHz_PCIX_ECC, /* 6 */
718 PCI_SPEED_133MHz_PCIX_ECC, /* 7 */
719 PCI_SPEED_UNKNOWN, /* 8 */
720 PCI_SPEED_66MHz_PCIX_266, /* 9 */
721 PCI_SPEED_100MHz_PCIX_266, /* A */
722 PCI_SPEED_133MHz_PCIX_266, /* B */
723 PCI_SPEED_UNKNOWN, /* C */
724 PCI_SPEED_66MHz_PCIX_533, /* D */
725 PCI_SPEED_100MHz_PCIX_533, /* E */
726 PCI_SPEED_133MHz_PCIX_533 /* F */
729 /* Indexed by PCI_EXP_LNKCAP_SLS, PCI_EXP_LNKSTA_CLS */
730 const unsigned char pcie_link_speed[] = {
731 PCI_SPEED_UNKNOWN, /* 0 */
732 PCIE_SPEED_2_5GT, /* 1 */
733 PCIE_SPEED_5_0GT, /* 2 */
734 PCIE_SPEED_8_0GT, /* 3 */
735 PCIE_SPEED_16_0GT, /* 4 */
736 PCIE_SPEED_32_0GT, /* 5 */
737 PCIE_SPEED_64_0GT, /* 6 */
738 PCI_SPEED_UNKNOWN, /* 7 */
739 PCI_SPEED_UNKNOWN, /* 8 */
740 PCI_SPEED_UNKNOWN, /* 9 */
741 PCI_SPEED_UNKNOWN, /* A */
742 PCI_SPEED_UNKNOWN, /* B */
743 PCI_SPEED_UNKNOWN, /* C */
744 PCI_SPEED_UNKNOWN, /* D */
745 PCI_SPEED_UNKNOWN, /* E */
746 PCI_SPEED_UNKNOWN /* F */
748 EXPORT_SYMBOL_GPL(pcie_link_speed);
750 const char *pci_speed_string(enum pci_bus_speed speed)
752 /* Indexed by the pci_bus_speed enum */
753 static const char *speed_strings[] = {
754 "33 MHz PCI", /* 0x00 */
755 "66 MHz PCI", /* 0x01 */
756 "66 MHz PCI-X", /* 0x02 */
757 "100 MHz PCI-X", /* 0x03 */
758 "133 MHz PCI-X", /* 0x04 */
759 NULL, /* 0x05 */
760 NULL, /* 0x06 */
761 NULL, /* 0x07 */
762 NULL, /* 0x08 */
763 "66 MHz PCI-X 266", /* 0x09 */
764 "100 MHz PCI-X 266", /* 0x0a */
765 "133 MHz PCI-X 266", /* 0x0b */
766 "Unknown AGP", /* 0x0c */
767 "1x AGP", /* 0x0d */
768 "2x AGP", /* 0x0e */
769 "4x AGP", /* 0x0f */
770 "8x AGP", /* 0x10 */
771 "66 MHz PCI-X 533", /* 0x11 */
772 "100 MHz PCI-X 533", /* 0x12 */
773 "133 MHz PCI-X 533", /* 0x13 */
774 "2.5 GT/s PCIe", /* 0x14 */
775 "5.0 GT/s PCIe", /* 0x15 */
776 "8.0 GT/s PCIe", /* 0x16 */
777 "16.0 GT/s PCIe", /* 0x17 */
778 "32.0 GT/s PCIe", /* 0x18 */
779 "64.0 GT/s PCIe", /* 0x19 */
782 if (speed < ARRAY_SIZE(speed_strings))
783 return speed_strings[speed];
784 return "Unknown";
786 EXPORT_SYMBOL_GPL(pci_speed_string);
788 void pcie_update_link_speed(struct pci_bus *bus)
790 struct pci_dev *bridge = bus->self;
791 u16 linksta;
793 pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta);
794 __pcie_update_link_speed(bus, linksta);
796 EXPORT_SYMBOL_GPL(pcie_update_link_speed);
798 static unsigned char agp_speeds[] = {
799 AGP_UNKNOWN,
800 AGP_1X,
801 AGP_2X,
802 AGP_4X,
803 AGP_8X
806 static enum pci_bus_speed agp_speed(int agp3, int agpstat)
808 int index = 0;
810 if (agpstat & 4)
811 index = 3;
812 else if (agpstat & 2)
813 index = 2;
814 else if (agpstat & 1)
815 index = 1;
816 else
817 goto out;
819 if (agp3) {
820 index += 2;
821 if (index == 5)
822 index = 0;
825 out:
826 return agp_speeds[index];
829 static void pci_set_bus_speed(struct pci_bus *bus)
831 struct pci_dev *bridge = bus->self;
832 int pos;
834 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
835 if (!pos)
836 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
837 if (pos) {
838 u32 agpstat, agpcmd;
840 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
841 bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
843 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
844 bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
847 pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
848 if (pos) {
849 u16 status;
850 enum pci_bus_speed max;
852 pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS,
853 &status);
855 if (status & PCI_X_SSTATUS_533MHZ) {
856 max = PCI_SPEED_133MHz_PCIX_533;
857 } else if (status & PCI_X_SSTATUS_266MHZ) {
858 max = PCI_SPEED_133MHz_PCIX_266;
859 } else if (status & PCI_X_SSTATUS_133MHZ) {
860 if ((status & PCI_X_SSTATUS_VERS) == PCI_X_SSTATUS_V2)
861 max = PCI_SPEED_133MHz_PCIX_ECC;
862 else
863 max = PCI_SPEED_133MHz_PCIX;
864 } else {
865 max = PCI_SPEED_66MHz_PCIX;
868 bus->max_bus_speed = max;
869 bus->cur_bus_speed =
870 pcix_bus_speed[FIELD_GET(PCI_X_SSTATUS_FREQ, status)];
872 return;
875 if (pci_is_pcie(bridge)) {
876 u32 linkcap;
878 pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap);
879 bus->max_bus_speed = pcie_link_speed[linkcap & PCI_EXP_LNKCAP_SLS];
881 pcie_update_link_speed(bus);
885 static struct irq_domain *pci_host_bridge_msi_domain(struct pci_bus *bus)
887 struct irq_domain *d;
889 /* If the host bridge driver sets a MSI domain of the bridge, use it */
890 d = dev_get_msi_domain(bus->bridge);
893 * Any firmware interface that can resolve the msi_domain
894 * should be called from here.
896 if (!d)
897 d = pci_host_bridge_of_msi_domain(bus);
898 if (!d)
899 d = pci_host_bridge_acpi_msi_domain(bus);
902 * If no IRQ domain was found via the OF tree, try looking it up
903 * directly through the fwnode_handle.
905 if (!d) {
906 struct fwnode_handle *fwnode = pci_root_bus_fwnode(bus);
908 if (fwnode)
909 d = irq_find_matching_fwnode(fwnode,
910 DOMAIN_BUS_PCI_MSI);
913 return d;
916 static void pci_set_bus_msi_domain(struct pci_bus *bus)
918 struct irq_domain *d;
919 struct pci_bus *b;
922 * The bus can be a root bus, a subordinate bus, or a virtual bus
923 * created by an SR-IOV device. Walk up to the first bridge device
924 * found or derive the domain from the host bridge.
926 for (b = bus, d = NULL; !d && !pci_is_root_bus(b); b = b->parent) {
927 if (b->self)
928 d = dev_get_msi_domain(&b->self->dev);
931 if (!d)
932 d = pci_host_bridge_msi_domain(b);
934 dev_set_msi_domain(&bus->dev, d);
937 static bool pci_preserve_config(struct pci_host_bridge *host_bridge)
939 if (pci_acpi_preserve_config(host_bridge))
940 return true;
942 if (host_bridge->dev.parent && host_bridge->dev.parent->of_node)
943 return of_pci_preserve_config(host_bridge->dev.parent->of_node);
945 return false;
948 static int pci_register_host_bridge(struct pci_host_bridge *bridge)
950 struct device *parent = bridge->dev.parent;
951 struct resource_entry *window, *next, *n;
952 struct pci_bus *bus, *b;
953 resource_size_t offset, next_offset;
954 LIST_HEAD(resources);
955 struct resource *res, *next_res;
956 char addr[64], *fmt;
957 const char *name;
958 int err;
960 bus = pci_alloc_bus(NULL);
961 if (!bus)
962 return -ENOMEM;
964 bridge->bus = bus;
966 bus->sysdata = bridge->sysdata;
967 bus->ops = bridge->ops;
968 bus->number = bus->busn_res.start = bridge->busnr;
969 #ifdef CONFIG_PCI_DOMAINS_GENERIC
970 if (bridge->domain_nr == PCI_DOMAIN_NR_NOT_SET)
971 bus->domain_nr = pci_bus_find_domain_nr(bus, parent);
972 else
973 bus->domain_nr = bridge->domain_nr;
974 if (bus->domain_nr < 0) {
975 err = bus->domain_nr;
976 goto free;
978 #endif
980 b = pci_find_bus(pci_domain_nr(bus), bridge->busnr);
981 if (b) {
982 /* Ignore it if we already got here via a different bridge */
983 dev_dbg(&b->dev, "bus already known\n");
984 err = -EEXIST;
985 goto free;
988 dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(bus),
989 bridge->busnr);
991 err = pcibios_root_bridge_prepare(bridge);
992 if (err)
993 goto free;
995 /* Temporarily move resources off the list */
996 list_splice_init(&bridge->windows, &resources);
997 err = device_add(&bridge->dev);
998 if (err) {
999 put_device(&bridge->dev);
1000 goto free;
1002 bus->bridge = get_device(&bridge->dev);
1003 device_enable_async_suspend(bus->bridge);
1004 pci_set_bus_of_node(bus);
1005 pci_set_bus_msi_domain(bus);
1006 if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev) &&
1007 !pci_host_of_has_msi_map(parent))
1008 bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
1010 if (!parent)
1011 set_dev_node(bus->bridge, pcibus_to_node(bus));
1013 bus->dev.class = &pcibus_class;
1014 bus->dev.parent = bus->bridge;
1016 dev_set_name(&bus->dev, "%04x:%02x", pci_domain_nr(bus), bus->number);
1017 name = dev_name(&bus->dev);
1019 err = device_register(&bus->dev);
1020 if (err)
1021 goto unregister;
1023 pcibios_add_bus(bus);
1025 if (bus->ops->add_bus) {
1026 err = bus->ops->add_bus(bus);
1027 if (WARN_ON(err < 0))
1028 dev_err(&bus->dev, "failed to add bus: %d\n", err);
1031 /* Create legacy_io and legacy_mem files for this bus */
1032 pci_create_legacy_files(bus);
1034 if (parent)
1035 dev_info(parent, "PCI host bridge to bus %s\n", name);
1036 else
1037 pr_info("PCI host bridge to bus %s\n", name);
1039 if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
1040 dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
1042 /* Check if the boot configuration by FW needs to be preserved */
1043 bridge->preserve_config = pci_preserve_config(bridge);
1045 /* Coalesce contiguous windows */
1046 resource_list_for_each_entry_safe(window, n, &resources) {
1047 if (list_is_last(&window->node, &resources))
1048 break;
1050 next = list_next_entry(window, node);
1051 offset = window->offset;
1052 res = window->res;
1053 next_offset = next->offset;
1054 next_res = next->res;
1056 if (res->flags != next_res->flags || offset != next_offset)
1057 continue;
1059 if (res->end + 1 == next_res->start) {
1060 next_res->start = res->start;
1061 res->flags = res->start = res->end = 0;
1065 /* Add initial resources to the bus */
1066 resource_list_for_each_entry_safe(window, n, &resources) {
1067 offset = window->offset;
1068 res = window->res;
1069 if (!res->flags && !res->start && !res->end) {
1070 release_resource(res);
1071 resource_list_destroy_entry(window);
1072 continue;
1075 list_move_tail(&window->node, &bridge->windows);
1077 if (res->flags & IORESOURCE_BUS)
1078 pci_bus_insert_busn_res(bus, bus->number, res->end);
1079 else
1080 pci_bus_add_resource(bus, res);
1082 if (offset) {
1083 if (resource_type(res) == IORESOURCE_IO)
1084 fmt = " (bus address [%#06llx-%#06llx])";
1085 else
1086 fmt = " (bus address [%#010llx-%#010llx])";
1088 snprintf(addr, sizeof(addr), fmt,
1089 (unsigned long long)(res->start - offset),
1090 (unsigned long long)(res->end - offset));
1091 } else
1092 addr[0] = '\0';
1094 dev_info(&bus->dev, "root bus resource %pR%s\n", res, addr);
1097 down_write(&pci_bus_sem);
1098 list_add_tail(&bus->node, &pci_root_buses);
1099 up_write(&pci_bus_sem);
1101 return 0;
1103 unregister:
1104 put_device(&bridge->dev);
1105 device_del(&bridge->dev);
1107 free:
1108 #ifdef CONFIG_PCI_DOMAINS_GENERIC
1109 pci_bus_release_domain_nr(parent, bus->domain_nr);
1110 #endif
1111 kfree(bus);
1112 return err;
1115 static bool pci_bridge_child_ext_cfg_accessible(struct pci_dev *bridge)
1117 int pos;
1118 u32 status;
1121 * If extended config space isn't accessible on a bridge's primary
1122 * bus, we certainly can't access it on the secondary bus.
1124 if (bridge->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG)
1125 return false;
1128 * PCIe Root Ports and switch ports are PCIe on both sides, so if
1129 * extended config space is accessible on the primary, it's also
1130 * accessible on the secondary.
1132 if (pci_is_pcie(bridge) &&
1133 (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT ||
1134 pci_pcie_type(bridge) == PCI_EXP_TYPE_UPSTREAM ||
1135 pci_pcie_type(bridge) == PCI_EXP_TYPE_DOWNSTREAM))
1136 return true;
1139 * For the other bridge types:
1140 * - PCI-to-PCI bridges
1141 * - PCIe-to-PCI/PCI-X forward bridges
1142 * - PCI/PCI-X-to-PCIe reverse bridges
1143 * extended config space on the secondary side is only accessible
1144 * if the bridge supports PCI-X Mode 2.
1146 pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
1147 if (!pos)
1148 return false;
1150 pci_read_config_dword(bridge, pos + PCI_X_STATUS, &status);
1151 return status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ);
1154 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
1155 struct pci_dev *bridge, int busnr)
1157 struct pci_bus *child;
1158 struct pci_host_bridge *host;
1159 int i;
1160 int ret;
1162 /* Allocate a new bus and inherit stuff from the parent */
1163 child = pci_alloc_bus(parent);
1164 if (!child)
1165 return NULL;
1167 child->parent = parent;
1168 child->sysdata = parent->sysdata;
1169 child->bus_flags = parent->bus_flags;
1171 host = pci_find_host_bridge(parent);
1172 if (host->child_ops)
1173 child->ops = host->child_ops;
1174 else
1175 child->ops = parent->ops;
1178 * Initialize some portions of the bus device, but don't register
1179 * it now as the parent is not properly set up yet.
1181 child->dev.class = &pcibus_class;
1182 dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
1184 /* Set up the primary, secondary and subordinate bus numbers */
1185 child->number = child->busn_res.start = busnr;
1186 child->primary = parent->busn_res.start;
1187 child->busn_res.end = 0xff;
1189 if (!bridge) {
1190 child->dev.parent = parent->bridge;
1191 goto add_dev;
1194 child->self = bridge;
1195 child->bridge = get_device(&bridge->dev);
1196 child->dev.parent = child->bridge;
1197 pci_set_bus_of_node(child);
1198 pci_set_bus_speed(child);
1201 * Check whether extended config space is accessible on the child
1202 * bus. Note that we currently assume it is always accessible on
1203 * the root bus.
1205 if (!pci_bridge_child_ext_cfg_accessible(bridge)) {
1206 child->bus_flags |= PCI_BUS_FLAGS_NO_EXTCFG;
1207 pci_info(child, "extended config space not accessible\n");
1210 /* Set up default resource pointers and names */
1211 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
1212 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
1213 child->resource[i]->name = child->name;
1215 bridge->subordinate = child;
1217 add_dev:
1218 pci_set_bus_msi_domain(child);
1219 ret = device_register(&child->dev);
1220 WARN_ON(ret < 0);
1222 pcibios_add_bus(child);
1224 if (child->ops->add_bus) {
1225 ret = child->ops->add_bus(child);
1226 if (WARN_ON(ret < 0))
1227 dev_err(&child->dev, "failed to add bus: %d\n", ret);
1230 /* Create legacy_io and legacy_mem files for this bus */
1231 pci_create_legacy_files(child);
1233 return child;
1236 struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
1237 int busnr)
1239 struct pci_bus *child;
1241 child = pci_alloc_child_bus(parent, dev, busnr);
1242 if (child) {
1243 down_write(&pci_bus_sem);
1244 list_add_tail(&child->node, &parent->children);
1245 up_write(&pci_bus_sem);
1247 return child;
1249 EXPORT_SYMBOL(pci_add_new_bus);
1251 static void pci_enable_rrs_sv(struct pci_dev *pdev)
1253 u16 root_cap = 0;
1255 /* Enable Configuration RRS Software Visibility if supported */
1256 pcie_capability_read_word(pdev, PCI_EXP_RTCAP, &root_cap);
1257 if (root_cap & PCI_EXP_RTCAP_RRS_SV) {
1258 pcie_capability_set_word(pdev, PCI_EXP_RTCTL,
1259 PCI_EXP_RTCTL_RRS_SVE);
1260 pdev->config_rrs_sv = 1;
1264 static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
1265 unsigned int available_buses);
1267 * pci_ea_fixed_busnrs() - Read fixed Secondary and Subordinate bus
1268 * numbers from EA capability.
1269 * @dev: Bridge
1270 * @sec: updated with secondary bus number from EA
1271 * @sub: updated with subordinate bus number from EA
1273 * If @dev is a bridge with EA capability that specifies valid secondary
1274 * and subordinate bus numbers, return true with the bus numbers in @sec
1275 * and @sub. Otherwise return false.
1277 static bool pci_ea_fixed_busnrs(struct pci_dev *dev, u8 *sec, u8 *sub)
1279 int ea, offset;
1280 u32 dw;
1281 u8 ea_sec, ea_sub;
1283 if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE)
1284 return false;
1286 /* find PCI EA capability in list */
1287 ea = pci_find_capability(dev, PCI_CAP_ID_EA);
1288 if (!ea)
1289 return false;
1291 offset = ea + PCI_EA_FIRST_ENT;
1292 pci_read_config_dword(dev, offset, &dw);
1293 ea_sec = FIELD_GET(PCI_EA_SEC_BUS_MASK, dw);
1294 ea_sub = FIELD_GET(PCI_EA_SUB_BUS_MASK, dw);
1295 if (ea_sec == 0 || ea_sub < ea_sec)
1296 return false;
1298 *sec = ea_sec;
1299 *sub = ea_sub;
1300 return true;
1304 * pci_scan_bridge_extend() - Scan buses behind a bridge
1305 * @bus: Parent bus the bridge is on
1306 * @dev: Bridge itself
1307 * @max: Starting subordinate number of buses behind this bridge
1308 * @available_buses: Total number of buses available for this bridge and
1309 * the devices below. After the minimal bus space has
1310 * been allocated the remaining buses will be
1311 * distributed equally between hotplug-capable bridges.
1312 * @pass: Either %0 (scan already configured bridges) or %1 (scan bridges
1313 * that need to be reconfigured.
1315 * If it's a bridge, configure it and scan the bus behind it.
1316 * For CardBus bridges, we don't scan behind as the devices will
1317 * be handled by the bridge driver itself.
1319 * We need to process bridges in two passes -- first we scan those
1320 * already configured by the BIOS and after we are done with all of
1321 * them, we proceed to assigning numbers to the remaining buses in
1322 * order to avoid overlaps between old and new bus numbers.
1324 * Return: New subordinate number covering all buses behind this bridge.
1326 static int pci_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev,
1327 int max, unsigned int available_buses,
1328 int pass)
1330 struct pci_bus *child;
1331 int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
1332 u32 buses, i, j = 0;
1333 u16 bctl;
1334 u8 primary, secondary, subordinate;
1335 int broken = 0;
1336 bool fixed_buses;
1337 u8 fixed_sec, fixed_sub;
1338 int next_busnr;
1341 * Make sure the bridge is powered on to be able to access config
1342 * space of devices below it.
1344 pm_runtime_get_sync(&dev->dev);
1346 pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
1347 primary = buses & 0xFF;
1348 secondary = (buses >> 8) & 0xFF;
1349 subordinate = (buses >> 16) & 0xFF;
1351 pci_dbg(dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
1352 secondary, subordinate, pass);
1354 if (!primary && (primary != bus->number) && secondary && subordinate) {
1355 pci_warn(dev, "Primary bus is hard wired to 0\n");
1356 primary = bus->number;
1359 /* Check if setup is sensible at all */
1360 if (!pass &&
1361 (primary != bus->number || secondary <= bus->number ||
1362 secondary > subordinate)) {
1363 pci_info(dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
1364 secondary, subordinate);
1365 broken = 1;
1369 * Disable Master-Abort Mode during probing to avoid reporting of
1370 * bus errors in some architectures.
1372 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
1373 pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
1374 bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
1376 pci_enable_rrs_sv(dev);
1378 if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
1379 !is_cardbus && !broken) {
1380 unsigned int cmax, buses;
1383 * Bus already configured by firmware, process it in the
1384 * first pass and just note the configuration.
1386 if (pass)
1387 goto out;
1390 * The bus might already exist for two reasons: Either we
1391 * are rescanning the bus or the bus is reachable through
1392 * more than one bridge. The second case can happen with
1393 * the i450NX chipset.
1395 child = pci_find_bus(pci_domain_nr(bus), secondary);
1396 if (!child) {
1397 child = pci_add_new_bus(bus, dev, secondary);
1398 if (!child)
1399 goto out;
1400 child->primary = primary;
1401 pci_bus_insert_busn_res(child, secondary, subordinate);
1402 child->bridge_ctl = bctl;
1405 buses = subordinate - secondary;
1406 cmax = pci_scan_child_bus_extend(child, buses);
1407 if (cmax > subordinate)
1408 pci_warn(dev, "bridge has subordinate %02x but max busn %02x\n",
1409 subordinate, cmax);
1411 /* Subordinate should equal child->busn_res.end */
1412 if (subordinate > max)
1413 max = subordinate;
1414 } else {
1417 * We need to assign a number to this bus which we always
1418 * do in the second pass.
1420 if (!pass) {
1421 if (pcibios_assign_all_busses() || broken || is_cardbus)
1424 * Temporarily disable forwarding of the
1425 * configuration cycles on all bridges in
1426 * this bus segment to avoid possible
1427 * conflicts in the second pass between two
1428 * bridges programmed with overlapping bus
1429 * ranges.
1431 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
1432 buses & ~0xffffff);
1433 goto out;
1436 /* Clear errors */
1437 pci_write_config_word(dev, PCI_STATUS, 0xffff);
1439 /* Read bus numbers from EA Capability (if present) */
1440 fixed_buses = pci_ea_fixed_busnrs(dev, &fixed_sec, &fixed_sub);
1441 if (fixed_buses)
1442 next_busnr = fixed_sec;
1443 else
1444 next_busnr = max + 1;
1447 * Prevent assigning a bus number that already exists.
1448 * This can happen when a bridge is hot-plugged, so in this
1449 * case we only re-scan this bus.
1451 child = pci_find_bus(pci_domain_nr(bus), next_busnr);
1452 if (!child) {
1453 child = pci_add_new_bus(bus, dev, next_busnr);
1454 if (!child)
1455 goto out;
1456 pci_bus_insert_busn_res(child, next_busnr,
1457 bus->busn_res.end);
1459 max++;
1460 if (available_buses)
1461 available_buses--;
1463 buses = (buses & 0xff000000)
1464 | ((unsigned int)(child->primary) << 0)
1465 | ((unsigned int)(child->busn_res.start) << 8)
1466 | ((unsigned int)(child->busn_res.end) << 16);
1469 * yenta.c forces a secondary latency timer of 176.
1470 * Copy that behaviour here.
1472 if (is_cardbus) {
1473 buses &= ~0xff000000;
1474 buses |= CARDBUS_LATENCY_TIMER << 24;
1477 /* We need to blast all three values with a single write */
1478 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
1480 if (!is_cardbus) {
1481 child->bridge_ctl = bctl;
1482 max = pci_scan_child_bus_extend(child, available_buses);
1483 } else {
1486 * For CardBus bridges, we leave 4 bus numbers as
1487 * cards with a PCI-to-PCI bridge can be inserted
1488 * later.
1490 for (i = 0; i < CARDBUS_RESERVE_BUSNR; i++) {
1491 struct pci_bus *parent = bus;
1492 if (pci_find_bus(pci_domain_nr(bus),
1493 max+i+1))
1494 break;
1495 while (parent->parent) {
1496 if ((!pcibios_assign_all_busses()) &&
1497 (parent->busn_res.end > max) &&
1498 (parent->busn_res.end <= max+i)) {
1499 j = 1;
1501 parent = parent->parent;
1503 if (j) {
1506 * Often, there are two CardBus
1507 * bridges -- try to leave one
1508 * valid bus number for each one.
1510 i /= 2;
1511 break;
1514 max += i;
1518 * Set subordinate bus number to its real value.
1519 * If fixed subordinate bus number exists from EA
1520 * capability then use it.
1522 if (fixed_buses)
1523 max = fixed_sub;
1524 pci_bus_update_busn_res_end(child, max);
1525 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
1528 sprintf(child->name,
1529 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
1530 pci_domain_nr(bus), child->number);
1532 /* Check that all devices are accessible */
1533 while (bus->parent) {
1534 if ((child->busn_res.end > bus->busn_res.end) ||
1535 (child->number > bus->busn_res.end) ||
1536 (child->number < bus->number) ||
1537 (child->busn_res.end < bus->number)) {
1538 dev_info(&dev->dev, "devices behind bridge are unusable because %pR cannot be assigned for them\n",
1539 &child->busn_res);
1540 break;
1542 bus = bus->parent;
1545 out:
1546 /* Clear errors in the Secondary Status Register */
1547 pci_write_config_word(dev, PCI_SEC_STATUS, 0xffff);
1549 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
1551 pm_runtime_put(&dev->dev);
1553 return max;
1557 * pci_scan_bridge() - Scan buses behind a bridge
1558 * @bus: Parent bus the bridge is on
1559 * @dev: Bridge itself
1560 * @max: Starting subordinate number of buses behind this bridge
1561 * @pass: Either %0 (scan already configured bridges) or %1 (scan bridges
1562 * that need to be reconfigured.
1564 * If it's a bridge, configure it and scan the bus behind it.
1565 * For CardBus bridges, we don't scan behind as the devices will
1566 * be handled by the bridge driver itself.
1568 * We need to process bridges in two passes -- first we scan those
1569 * already configured by the BIOS and after we are done with all of
1570 * them, we proceed to assigning numbers to the remaining buses in
1571 * order to avoid overlaps between old and new bus numbers.
1573 * Return: New subordinate number covering all buses behind this bridge.
1575 int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
1577 return pci_scan_bridge_extend(bus, dev, max, 0, pass);
1579 EXPORT_SYMBOL(pci_scan_bridge);
1582 * Read interrupt line and base address registers.
1583 * The architecture-dependent code can tweak these, of course.
1585 static void pci_read_irq(struct pci_dev *dev)
1587 unsigned char irq;
1589 /* VFs are not allowed to use INTx, so skip the config reads */
1590 if (dev->is_virtfn) {
1591 dev->pin = 0;
1592 dev->irq = 0;
1593 return;
1596 pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
1597 dev->pin = irq;
1598 if (irq)
1599 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
1600 dev->irq = irq;
1603 void set_pcie_port_type(struct pci_dev *pdev)
1605 int pos;
1606 u16 reg16;
1607 u32 reg32;
1608 int type;
1609 struct pci_dev *parent;
1611 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
1612 if (!pos)
1613 return;
1615 pdev->pcie_cap = pos;
1616 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
1617 pdev->pcie_flags_reg = reg16;
1618 pci_read_config_dword(pdev, pos + PCI_EXP_DEVCAP, &pdev->devcap);
1619 pdev->pcie_mpss = FIELD_GET(PCI_EXP_DEVCAP_PAYLOAD, pdev->devcap);
1621 pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &reg32);
1622 if (reg32 & PCI_EXP_LNKCAP_DLLLARC)
1623 pdev->link_active_reporting = 1;
1625 parent = pci_upstream_bridge(pdev);
1626 if (!parent)
1627 return;
1630 * Some systems do not identify their upstream/downstream ports
1631 * correctly so detect impossible configurations here and correct
1632 * the port type accordingly.
1634 type = pci_pcie_type(pdev);
1635 if (type == PCI_EXP_TYPE_DOWNSTREAM) {
1637 * If pdev claims to be downstream port but the parent
1638 * device is also downstream port assume pdev is actually
1639 * upstream port.
1641 if (pcie_downstream_port(parent)) {
1642 pci_info(pdev, "claims to be downstream port but is acting as upstream port, correcting type\n");
1643 pdev->pcie_flags_reg &= ~PCI_EXP_FLAGS_TYPE;
1644 pdev->pcie_flags_reg |= PCI_EXP_TYPE_UPSTREAM;
1646 } else if (type == PCI_EXP_TYPE_UPSTREAM) {
1648 * If pdev claims to be upstream port but the parent
1649 * device is also upstream port assume pdev is actually
1650 * downstream port.
1652 if (pci_pcie_type(parent) == PCI_EXP_TYPE_UPSTREAM) {
1653 pci_info(pdev, "claims to be upstream port but is acting as downstream port, correcting type\n");
1654 pdev->pcie_flags_reg &= ~PCI_EXP_FLAGS_TYPE;
1655 pdev->pcie_flags_reg |= PCI_EXP_TYPE_DOWNSTREAM;
1660 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
1662 u32 reg32;
1664 pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32);
1665 if (reg32 & PCI_EXP_SLTCAP_HPC)
1666 pdev->is_hotplug_bridge = 1;
1669 static void set_pcie_thunderbolt(struct pci_dev *dev)
1671 u16 vsec;
1673 /* Is the device part of a Thunderbolt controller? */
1674 vsec = pci_find_vsec_capability(dev, PCI_VENDOR_ID_INTEL, PCI_VSEC_ID_INTEL_TBT);
1675 if (vsec)
1676 dev->is_thunderbolt = 1;
1679 static void set_pcie_untrusted(struct pci_dev *dev)
1681 struct pci_dev *parent = pci_upstream_bridge(dev);
1683 if (!parent)
1684 return;
1686 * If the upstream bridge is untrusted we treat this device as
1687 * untrusted as well.
1689 if (parent->untrusted) {
1690 dev->untrusted = true;
1691 return;
1694 if (arch_pci_dev_is_removable(dev)) {
1695 pci_dbg(dev, "marking as untrusted\n");
1696 dev->untrusted = true;
1700 static void pci_set_removable(struct pci_dev *dev)
1702 struct pci_dev *parent = pci_upstream_bridge(dev);
1704 if (!parent)
1705 return;
1707 * We (only) consider everything tunneled below an external_facing
1708 * device to be removable by the user. We're mainly concerned with
1709 * consumer platforms with user accessible thunderbolt ports that are
1710 * vulnerable to DMA attacks, and we expect those ports to be marked by
1711 * the firmware as external_facing. Devices in traditional hotplug
1712 * slots can technically be removed, but the expectation is that unless
1713 * the port is marked with external_facing, such devices are less
1714 * accessible to user / may not be removed by end user, and thus not
1715 * exposed as "removable" to userspace.
1717 if (dev_is_removable(&parent->dev)) {
1718 dev_set_removable(&dev->dev, DEVICE_REMOVABLE);
1719 return;
1722 if (arch_pci_dev_is_removable(dev)) {
1723 pci_dbg(dev, "marking as removable\n");
1724 dev_set_removable(&dev->dev, DEVICE_REMOVABLE);
1729 * pci_ext_cfg_is_aliased - Is ext config space just an alias of std config?
1730 * @dev: PCI device
1732 * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 says that
1733 * when forwarding a type1 configuration request the bridge must check that
1734 * the extended register address field is zero. The bridge is not permitted
1735 * to forward the transactions and must handle it as an Unsupported Request.
1736 * Some bridges do not follow this rule and simply drop the extended register
1737 * bits, resulting in the standard config space being aliased, every 256
1738 * bytes across the entire configuration space. Test for this condition by
1739 * comparing the first dword of each potential alias to the vendor/device ID.
1740 * Known offenders:
1741 * ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01 & 03)
1742 * AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40)
1744 static bool pci_ext_cfg_is_aliased(struct pci_dev *dev)
1746 #ifdef CONFIG_PCI_QUIRKS
1747 int pos, ret;
1748 u32 header, tmp;
1750 pci_read_config_dword(dev, PCI_VENDOR_ID, &header);
1752 for (pos = PCI_CFG_SPACE_SIZE;
1753 pos < PCI_CFG_SPACE_EXP_SIZE; pos += PCI_CFG_SPACE_SIZE) {
1754 ret = pci_read_config_dword(dev, pos, &tmp);
1755 if ((ret != PCIBIOS_SUCCESSFUL) || (header != tmp))
1756 return false;
1759 return true;
1760 #else
1761 return false;
1762 #endif
1766 * pci_cfg_space_size_ext - Get the configuration space size of the PCI device
1767 * @dev: PCI device
1769 * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1770 * have 4096 bytes. Even if the device is capable, that doesn't mean we can
1771 * access it. Maybe we don't have a way to generate extended config space
1772 * accesses, or the device is behind a reverse Express bridge. So we try
1773 * reading the dword at 0x100 which must either be 0 or a valid extended
1774 * capability header.
1776 static int pci_cfg_space_size_ext(struct pci_dev *dev)
1778 u32 status;
1779 int pos = PCI_CFG_SPACE_SIZE;
1781 if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1782 return PCI_CFG_SPACE_SIZE;
1783 if (PCI_POSSIBLE_ERROR(status) || pci_ext_cfg_is_aliased(dev))
1784 return PCI_CFG_SPACE_SIZE;
1786 return PCI_CFG_SPACE_EXP_SIZE;
1789 int pci_cfg_space_size(struct pci_dev *dev)
1791 int pos;
1792 u32 status;
1793 u16 class;
1795 #ifdef CONFIG_PCI_IOV
1797 * Per the SR-IOV specification (rev 1.1, sec 3.5), VFs are required to
1798 * implement a PCIe capability and therefore must implement extended
1799 * config space. We can skip the NO_EXTCFG test below and the
1800 * reachability/aliasing test in pci_cfg_space_size_ext() by virtue of
1801 * the fact that the SR-IOV capability on the PF resides in extended
1802 * config space and must be accessible and non-aliased to have enabled
1803 * support for this VF. This is a micro performance optimization for
1804 * systems supporting many VFs.
1806 if (dev->is_virtfn)
1807 return PCI_CFG_SPACE_EXP_SIZE;
1808 #endif
1810 if (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG)
1811 return PCI_CFG_SPACE_SIZE;
1813 class = dev->class >> 8;
1814 if (class == PCI_CLASS_BRIDGE_HOST)
1815 return pci_cfg_space_size_ext(dev);
1817 if (pci_is_pcie(dev))
1818 return pci_cfg_space_size_ext(dev);
1820 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1821 if (!pos)
1822 return PCI_CFG_SPACE_SIZE;
1824 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1825 if (status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ))
1826 return pci_cfg_space_size_ext(dev);
1828 return PCI_CFG_SPACE_SIZE;
1831 static u32 pci_class(struct pci_dev *dev)
1833 u32 class;
1835 #ifdef CONFIG_PCI_IOV
1836 if (dev->is_virtfn)
1837 return dev->physfn->sriov->class;
1838 #endif
1839 pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
1840 return class;
1843 static void pci_subsystem_ids(struct pci_dev *dev, u16 *vendor, u16 *device)
1845 #ifdef CONFIG_PCI_IOV
1846 if (dev->is_virtfn) {
1847 *vendor = dev->physfn->sriov->subsystem_vendor;
1848 *device = dev->physfn->sriov->subsystem_device;
1849 return;
1851 #endif
1852 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, vendor);
1853 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, device);
1856 static u8 pci_hdr_type(struct pci_dev *dev)
1858 u8 hdr_type;
1860 #ifdef CONFIG_PCI_IOV
1861 if (dev->is_virtfn)
1862 return dev->physfn->sriov->hdr_type;
1863 #endif
1864 pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type);
1865 return hdr_type;
1868 #define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
1871 * pci_intx_mask_broken - Test PCI_COMMAND_INTX_DISABLE writability
1872 * @dev: PCI device
1874 * Test whether PCI_COMMAND_INTX_DISABLE is writable for @dev. Check this
1875 * at enumeration-time to avoid modifying PCI_COMMAND at run-time.
1877 static int pci_intx_mask_broken(struct pci_dev *dev)
1879 u16 orig, toggle, new;
1881 pci_read_config_word(dev, PCI_COMMAND, &orig);
1882 toggle = orig ^ PCI_COMMAND_INTX_DISABLE;
1883 pci_write_config_word(dev, PCI_COMMAND, toggle);
1884 pci_read_config_word(dev, PCI_COMMAND, &new);
1886 pci_write_config_word(dev, PCI_COMMAND, orig);
1889 * PCI_COMMAND_INTX_DISABLE was reserved and read-only prior to PCI
1890 * r2.3, so strictly speaking, a device is not *broken* if it's not
1891 * writable. But we'll live with the misnomer for now.
1893 if (new != toggle)
1894 return 1;
1895 return 0;
1898 static void early_dump_pci_device(struct pci_dev *pdev)
1900 u32 value[256 / 4];
1901 int i;
1903 pci_info(pdev, "config space:\n");
1905 for (i = 0; i < 256; i += 4)
1906 pci_read_config_dword(pdev, i, &value[i / 4]);
1908 print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 1,
1909 value, 256, false);
1912 static const char *pci_type_str(struct pci_dev *dev)
1914 static const char * const str[] = {
1915 "PCIe Endpoint",
1916 "PCIe Legacy Endpoint",
1917 "PCIe unknown",
1918 "PCIe unknown",
1919 "PCIe Root Port",
1920 "PCIe Switch Upstream Port",
1921 "PCIe Switch Downstream Port",
1922 "PCIe to PCI/PCI-X bridge",
1923 "PCI/PCI-X to PCIe bridge",
1924 "PCIe Root Complex Integrated Endpoint",
1925 "PCIe Root Complex Event Collector",
1927 int type;
1929 if (pci_is_pcie(dev)) {
1930 type = pci_pcie_type(dev);
1931 if (type < ARRAY_SIZE(str))
1932 return str[type];
1934 return "PCIe unknown";
1937 switch (dev->hdr_type) {
1938 case PCI_HEADER_TYPE_NORMAL:
1939 return "conventional PCI endpoint";
1940 case PCI_HEADER_TYPE_BRIDGE:
1941 return "conventional PCI bridge";
1942 case PCI_HEADER_TYPE_CARDBUS:
1943 return "CardBus bridge";
1944 default:
1945 return "conventional PCI";
1950 * pci_setup_device - Fill in class and map information of a device
1951 * @dev: the device structure to fill
1953 * Initialize the device structure with information about the device's
1954 * vendor,class,memory and IO-space addresses, IRQ lines etc.
1955 * Called at initialisation of the PCI subsystem and by CardBus services.
1956 * Returns 0 on success and negative if unknown type of device (not normal,
1957 * bridge or CardBus).
1959 int pci_setup_device(struct pci_dev *dev)
1961 u32 class;
1962 u16 cmd;
1963 u8 hdr_type;
1964 int err, pos = 0;
1965 struct pci_bus_region region;
1966 struct resource *res;
1968 hdr_type = pci_hdr_type(dev);
1970 dev->sysdata = dev->bus->sysdata;
1971 dev->dev.parent = dev->bus->bridge;
1972 dev->dev.bus = &pci_bus_type;
1973 dev->hdr_type = hdr_type & 0x7f;
1974 dev->multifunction = !!(hdr_type & 0x80);
1975 dev->error_state = pci_channel_io_normal;
1976 set_pcie_port_type(dev);
1978 err = pci_set_of_node(dev);
1979 if (err)
1980 return err;
1981 pci_set_acpi_fwnode(dev);
1983 pci_dev_assign_slot(dev);
1986 * Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
1987 * set this higher, assuming the system even supports it.
1989 dev->dma_mask = 0xffffffff;
1991 dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
1992 dev->bus->number, PCI_SLOT(dev->devfn),
1993 PCI_FUNC(dev->devfn));
1995 class = pci_class(dev);
1997 dev->revision = class & 0xff;
1998 dev->class = class >> 8; /* upper 3 bytes */
2000 if (pci_early_dump)
2001 early_dump_pci_device(dev);
2003 /* Need to have dev->class ready */
2004 dev->cfg_size = pci_cfg_space_size(dev);
2006 /* Need to have dev->cfg_size ready */
2007 set_pcie_thunderbolt(dev);
2009 set_pcie_untrusted(dev);
2011 if (pci_is_pcie(dev))
2012 dev->supported_speeds = pcie_get_supported_speeds(dev);
2014 /* "Unknown power state" */
2015 dev->current_state = PCI_UNKNOWN;
2017 /* Early fixups, before probing the BARs */
2018 pci_fixup_device(pci_fixup_early, dev);
2020 pci_set_removable(dev);
2022 pci_info(dev, "[%04x:%04x] type %02x class %#08x %s\n",
2023 dev->vendor, dev->device, dev->hdr_type, dev->class,
2024 pci_type_str(dev));
2026 /* Device class may be changed after fixup */
2027 class = dev->class >> 8;
2029 if (dev->non_compliant_bars && !dev->mmio_always_on) {
2030 pci_read_config_word(dev, PCI_COMMAND, &cmd);
2031 if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
2032 pci_info(dev, "device has non-compliant BARs; disabling IO/MEM decoding\n");
2033 cmd &= ~PCI_COMMAND_IO;
2034 cmd &= ~PCI_COMMAND_MEMORY;
2035 pci_write_config_word(dev, PCI_COMMAND, cmd);
2039 dev->broken_intx_masking = pci_intx_mask_broken(dev);
2041 switch (dev->hdr_type) { /* header type */
2042 case PCI_HEADER_TYPE_NORMAL: /* standard header */
2043 if (class == PCI_CLASS_BRIDGE_PCI)
2044 goto bad;
2045 pci_read_irq(dev);
2046 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
2048 pci_subsystem_ids(dev, &dev->subsystem_vendor, &dev->subsystem_device);
2051 * Do the ugly legacy mode stuff here rather than broken chip
2052 * quirk code. Legacy mode ATA controllers have fixed
2053 * addresses. These are not always echoed in BAR0-3, and
2054 * BAR0-3 in a few cases contain junk!
2056 if (class == PCI_CLASS_STORAGE_IDE) {
2057 u8 progif;
2058 pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
2059 if ((progif & 1) == 0) {
2060 region.start = 0x1F0;
2061 region.end = 0x1F7;
2062 res = &dev->resource[0];
2063 res->flags = LEGACY_IO_RESOURCE;
2064 pcibios_bus_to_resource(dev->bus, res, &region);
2065 pci_info(dev, "BAR 0 %pR: legacy IDE quirk\n",
2066 res);
2067 region.start = 0x3F6;
2068 region.end = 0x3F6;
2069 res = &dev->resource[1];
2070 res->flags = LEGACY_IO_RESOURCE;
2071 pcibios_bus_to_resource(dev->bus, res, &region);
2072 pci_info(dev, "BAR 1 %pR: legacy IDE quirk\n",
2073 res);
2075 if ((progif & 4) == 0) {
2076 region.start = 0x170;
2077 region.end = 0x177;
2078 res = &dev->resource[2];
2079 res->flags = LEGACY_IO_RESOURCE;
2080 pcibios_bus_to_resource(dev->bus, res, &region);
2081 pci_info(dev, "BAR 2 %pR: legacy IDE quirk\n",
2082 res);
2083 region.start = 0x376;
2084 region.end = 0x376;
2085 res = &dev->resource[3];
2086 res->flags = LEGACY_IO_RESOURCE;
2087 pcibios_bus_to_resource(dev->bus, res, &region);
2088 pci_info(dev, "BAR 3 %pR: legacy IDE quirk\n",
2089 res);
2092 break;
2094 case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
2096 * The PCI-to-PCI bridge spec requires that subtractive
2097 * decoding (i.e. transparent) bridge must have programming
2098 * interface code of 0x01.
2100 pci_read_irq(dev);
2101 dev->transparent = ((dev->class & 0xff) == 1);
2102 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
2103 pci_read_bridge_windows(dev);
2104 set_pcie_hotplug_bridge(dev);
2105 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
2106 if (pos) {
2107 pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
2108 pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
2110 break;
2112 case PCI_HEADER_TYPE_CARDBUS: /* CardBus bridge header */
2113 if (class != PCI_CLASS_BRIDGE_CARDBUS)
2114 goto bad;
2115 pci_read_irq(dev);
2116 pci_read_bases(dev, 1, 0);
2117 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
2118 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
2119 break;
2121 default: /* unknown header */
2122 pci_err(dev, "unknown header type %02x, ignoring device\n",
2123 dev->hdr_type);
2124 pci_release_of_node(dev);
2125 return -EIO;
2127 bad:
2128 pci_err(dev, "ignoring class %#08x (doesn't match header type %02x)\n",
2129 dev->class, dev->hdr_type);
2130 dev->class = PCI_CLASS_NOT_DEFINED << 8;
2133 /* We found a fine healthy device, go go go... */
2134 return 0;
2137 static void pci_configure_mps(struct pci_dev *dev)
2139 struct pci_dev *bridge = pci_upstream_bridge(dev);
2140 int mps, mpss, p_mps, rc;
2142 if (!pci_is_pcie(dev))
2143 return;
2145 /* MPS and MRRS fields are of type 'RsvdP' for VFs, short-circuit out */
2146 if (dev->is_virtfn)
2147 return;
2150 * For Root Complex Integrated Endpoints, program the maximum
2151 * supported value unless limited by the PCIE_BUS_PEER2PEER case.
2153 if (pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END) {
2154 if (pcie_bus_config == PCIE_BUS_PEER2PEER)
2155 mps = 128;
2156 else
2157 mps = 128 << dev->pcie_mpss;
2158 rc = pcie_set_mps(dev, mps);
2159 if (rc) {
2160 pci_warn(dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
2161 mps);
2163 return;
2166 if (!bridge || !pci_is_pcie(bridge))
2167 return;
2169 mps = pcie_get_mps(dev);
2170 p_mps = pcie_get_mps(bridge);
2172 if (mps == p_mps)
2173 return;
2175 if (pcie_bus_config == PCIE_BUS_TUNE_OFF) {
2176 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",
2177 mps, pci_name(bridge), p_mps);
2178 return;
2182 * Fancier MPS configuration is done later by
2183 * pcie_bus_configure_settings()
2185 if (pcie_bus_config != PCIE_BUS_DEFAULT)
2186 return;
2188 mpss = 128 << dev->pcie_mpss;
2189 if (mpss < p_mps && pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) {
2190 pcie_set_mps(bridge, mpss);
2191 pci_info(dev, "Upstream bridge's Max Payload Size set to %d (was %d, max %d)\n",
2192 mpss, p_mps, 128 << bridge->pcie_mpss);
2193 p_mps = pcie_get_mps(bridge);
2196 rc = pcie_set_mps(dev, p_mps);
2197 if (rc) {
2198 pci_warn(dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
2199 p_mps);
2200 return;
2203 pci_info(dev, "Max Payload Size set to %d (was %d, max %d)\n",
2204 p_mps, mps, mpss);
2207 int pci_configure_extended_tags(struct pci_dev *dev, void *ign)
2209 struct pci_host_bridge *host;
2210 u32 cap;
2211 u16 ctl;
2212 int ret;
2214 if (!pci_is_pcie(dev))
2215 return 0;
2217 ret = pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &cap);
2218 if (ret)
2219 return 0;
2221 if (!(cap & PCI_EXP_DEVCAP_EXT_TAG))
2222 return 0;
2224 ret = pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &ctl);
2225 if (ret)
2226 return 0;
2228 host = pci_find_host_bridge(dev->bus);
2229 if (!host)
2230 return 0;
2233 * If some device in the hierarchy doesn't handle Extended Tags
2234 * correctly, make sure they're disabled.
2236 if (host->no_ext_tags) {
2237 if (ctl & PCI_EXP_DEVCTL_EXT_TAG) {
2238 pci_info(dev, "disabling Extended Tags\n");
2239 pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
2240 PCI_EXP_DEVCTL_EXT_TAG);
2242 return 0;
2245 if (!(ctl & PCI_EXP_DEVCTL_EXT_TAG)) {
2246 pci_info(dev, "enabling Extended Tags\n");
2247 pcie_capability_set_word(dev, PCI_EXP_DEVCTL,
2248 PCI_EXP_DEVCTL_EXT_TAG);
2250 return 0;
2254 * pcie_relaxed_ordering_enabled - Probe for PCIe relaxed ordering enable
2255 * @dev: PCI device to query
2257 * Returns true if the device has enabled relaxed ordering attribute.
2259 bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)
2261 u16 v;
2263 pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &v);
2265 return !!(v & PCI_EXP_DEVCTL_RELAX_EN);
2267 EXPORT_SYMBOL(pcie_relaxed_ordering_enabled);
2269 static void pci_configure_relaxed_ordering(struct pci_dev *dev)
2271 struct pci_dev *root;
2273 /* PCI_EXP_DEVCTL_RELAX_EN is RsvdP in VFs */
2274 if (dev->is_virtfn)
2275 return;
2277 if (!pcie_relaxed_ordering_enabled(dev))
2278 return;
2281 * For now, we only deal with Relaxed Ordering issues with Root
2282 * Ports. Peer-to-Peer DMA is another can of worms.
2284 root = pcie_find_root_port(dev);
2285 if (!root)
2286 return;
2288 if (root->dev_flags & PCI_DEV_FLAGS_NO_RELAXED_ORDERING) {
2289 pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
2290 PCI_EXP_DEVCTL_RELAX_EN);
2291 pci_info(dev, "Relaxed Ordering disabled because the Root Port didn't support it\n");
2295 static void pci_configure_eetlp_prefix(struct pci_dev *dev)
2297 struct pci_dev *bridge;
2298 unsigned int eetlp_max;
2299 int pcie_type;
2300 u32 cap;
2302 if (!pci_is_pcie(dev))
2303 return;
2305 pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap);
2306 if (!(cap & PCI_EXP_DEVCAP2_EE_PREFIX))
2307 return;
2309 pcie_type = pci_pcie_type(dev);
2311 eetlp_max = FIELD_GET(PCI_EXP_DEVCAP2_EE_PREFIX_MAX, cap);
2312 /* 00b means 4 */
2313 eetlp_max = eetlp_max ?: 4;
2315 if (pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
2316 pcie_type == PCI_EXP_TYPE_RC_END)
2317 dev->eetlp_prefix_max = eetlp_max;
2318 else {
2319 bridge = pci_upstream_bridge(dev);
2320 if (bridge && bridge->eetlp_prefix_max)
2321 dev->eetlp_prefix_max = eetlp_max;
2325 static void pci_configure_serr(struct pci_dev *dev)
2327 u16 control;
2329 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
2332 * A bridge will not forward ERR_ messages coming from an
2333 * endpoint unless SERR# forwarding is enabled.
2335 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &control);
2336 if (!(control & PCI_BRIDGE_CTL_SERR)) {
2337 control |= PCI_BRIDGE_CTL_SERR;
2338 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, control);
2343 static void pci_configure_device(struct pci_dev *dev)
2345 pci_configure_mps(dev);
2346 pci_configure_extended_tags(dev, NULL);
2347 pci_configure_relaxed_ordering(dev);
2348 pci_configure_ltr(dev);
2349 pci_configure_aspm_l1ss(dev);
2350 pci_configure_eetlp_prefix(dev);
2351 pci_configure_serr(dev);
2353 pci_acpi_program_hp_params(dev);
2356 static void pci_release_capabilities(struct pci_dev *dev)
2358 pci_aer_exit(dev);
2359 pci_rcec_exit(dev);
2360 pci_iov_release(dev);
2361 pci_free_cap_save_buffers(dev);
2365 * pci_release_dev - Free a PCI device structure when all users of it are
2366 * finished
2367 * @dev: device that's been disconnected
2369 * Will be called only by the device core when all users of this PCI device are
2370 * done.
2372 static void pci_release_dev(struct device *dev)
2374 struct pci_dev *pci_dev;
2376 pci_dev = to_pci_dev(dev);
2377 pci_release_capabilities(pci_dev);
2378 pci_release_of_node(pci_dev);
2379 pcibios_release_device(pci_dev);
2380 pci_bus_put(pci_dev->bus);
2381 kfree(pci_dev->driver_override);
2382 bitmap_free(pci_dev->dma_alias_mask);
2383 dev_dbg(dev, "device released\n");
2384 kfree(pci_dev);
2387 static const struct device_type pci_dev_type = {
2388 .groups = pci_dev_attr_groups,
2391 struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
2393 struct pci_dev *dev;
2395 dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
2396 if (!dev)
2397 return NULL;
2399 INIT_LIST_HEAD(&dev->bus_list);
2400 dev->dev.type = &pci_dev_type;
2401 dev->bus = pci_bus_get(bus);
2402 dev->driver_exclusive_resource = (struct resource) {
2403 .name = "PCI Exclusive",
2404 .start = 0,
2405 .end = -1,
2408 spin_lock_init(&dev->pcie_cap_lock);
2409 #ifdef CONFIG_PCI_MSI
2410 raw_spin_lock_init(&dev->msi_lock);
2411 #endif
2412 return dev;
2414 EXPORT_SYMBOL(pci_alloc_dev);
2416 static bool pci_bus_wait_rrs(struct pci_bus *bus, int devfn, u32 *l,
2417 int timeout)
2419 int delay = 1;
2421 if (!pci_bus_rrs_vendor_id(*l))
2422 return true; /* not a Configuration RRS completion */
2424 if (!timeout)
2425 return false; /* RRS, but caller doesn't want to wait */
2428 * We got the reserved Vendor ID that indicates a completion with
2429 * Configuration Request Retry Status (RRS). Retry until we get a
2430 * valid Vendor ID or we time out.
2432 while (pci_bus_rrs_vendor_id(*l)) {
2433 if (delay > timeout) {
2434 pr_warn("pci %04x:%02x:%02x.%d: not ready after %dms; giving up\n",
2435 pci_domain_nr(bus), bus->number,
2436 PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2438 return false;
2440 if (delay >= 1000)
2441 pr_info("pci %04x:%02x:%02x.%d: not ready after %dms; waiting\n",
2442 pci_domain_nr(bus), bus->number,
2443 PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2445 msleep(delay);
2446 delay *= 2;
2448 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
2449 return false;
2452 if (delay >= 1000)
2453 pr_info("pci %04x:%02x:%02x.%d: ready after %dms\n",
2454 pci_domain_nr(bus), bus->number,
2455 PCI_SLOT(devfn), PCI_FUNC(devfn), delay - 1);
2457 return true;
2460 bool pci_bus_generic_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
2461 int timeout)
2463 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
2464 return false;
2466 /* Some broken boards return 0 or ~0 (PCI_ERROR_RESPONSE) if a slot is empty: */
2467 if (PCI_POSSIBLE_ERROR(*l) || *l == 0x00000000 ||
2468 *l == 0x0000ffff || *l == 0xffff0000)
2469 return false;
2471 if (pci_bus_rrs_vendor_id(*l))
2472 return pci_bus_wait_rrs(bus, devfn, l, timeout);
2474 return true;
2477 bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
2478 int timeout)
2480 #ifdef CONFIG_PCI_QUIRKS
2481 struct pci_dev *bridge = bus->self;
2484 * Certain IDT switches have an issue where they improperly trigger
2485 * ACS Source Validation errors on completions for config reads.
2487 if (bridge && bridge->vendor == PCI_VENDOR_ID_IDT &&
2488 bridge->device == 0x80b5)
2489 return pci_idt_bus_quirk(bus, devfn, l, timeout);
2490 #endif
2492 return pci_bus_generic_read_dev_vendor_id(bus, devfn, l, timeout);
2494 EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
2497 * Read the config data for a PCI device, sanity-check it,
2498 * and fill in the dev structure.
2500 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
2502 struct pci_dev *dev;
2503 u32 l;
2505 if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000))
2506 return NULL;
2508 dev = pci_alloc_dev(bus);
2509 if (!dev)
2510 return NULL;
2512 dev->devfn = devfn;
2513 dev->vendor = l & 0xffff;
2514 dev->device = (l >> 16) & 0xffff;
2516 if (pci_setup_device(dev)) {
2517 pci_bus_put(dev->bus);
2518 kfree(dev);
2519 return NULL;
2522 return dev;
2525 void pcie_report_downtraining(struct pci_dev *dev)
2527 if (!pci_is_pcie(dev))
2528 return;
2530 /* Look from the device up to avoid downstream ports with no devices */
2531 if ((pci_pcie_type(dev) != PCI_EXP_TYPE_ENDPOINT) &&
2532 (pci_pcie_type(dev) != PCI_EXP_TYPE_LEG_END) &&
2533 (pci_pcie_type(dev) != PCI_EXP_TYPE_UPSTREAM))
2534 return;
2536 /* Multi-function PCIe devices share the same link/status */
2537 if (PCI_FUNC(dev->devfn) != 0 || dev->is_virtfn)
2538 return;
2540 /* Print link status only if the device is constrained by the fabric */
2541 __pcie_print_link_status(dev, false);
2544 static void pci_init_capabilities(struct pci_dev *dev)
2546 pci_ea_init(dev); /* Enhanced Allocation */
2547 pci_msi_init(dev); /* Disable MSI */
2548 pci_msix_init(dev); /* Disable MSI-X */
2550 /* Buffers for saving PCIe and PCI-X capabilities */
2551 pci_allocate_cap_save_buffers(dev);
2553 pci_pm_init(dev); /* Power Management */
2554 pci_vpd_init(dev); /* Vital Product Data */
2555 pci_configure_ari(dev); /* Alternative Routing-ID Forwarding */
2556 pci_iov_init(dev); /* Single Root I/O Virtualization */
2557 pci_ats_init(dev); /* Address Translation Services */
2558 pci_pri_init(dev); /* Page Request Interface */
2559 pci_pasid_init(dev); /* Process Address Space ID */
2560 pci_acs_init(dev); /* Access Control Services */
2561 pci_ptm_init(dev); /* Precision Time Measurement */
2562 pci_aer_init(dev); /* Advanced Error Reporting */
2563 pci_dpc_init(dev); /* Downstream Port Containment */
2564 pci_rcec_init(dev); /* Root Complex Event Collector */
2565 pci_doe_init(dev); /* Data Object Exchange */
2566 pci_tph_init(dev); /* TLP Processing Hints */
2568 pcie_report_downtraining(dev);
2569 pci_init_reset_methods(dev);
2573 * This is the equivalent of pci_host_bridge_msi_domain() that acts on
2574 * devices. Firmware interfaces that can select the MSI domain on a
2575 * per-device basis should be called from here.
2577 static struct irq_domain *pci_dev_msi_domain(struct pci_dev *dev)
2579 struct irq_domain *d;
2582 * If a domain has been set through the pcibios_device_add()
2583 * callback, then this is the one (platform code knows best).
2585 d = dev_get_msi_domain(&dev->dev);
2586 if (d)
2587 return d;
2590 * Let's see if we have a firmware interface able to provide
2591 * the domain.
2593 d = pci_msi_get_device_domain(dev);
2594 if (d)
2595 return d;
2597 return NULL;
2600 static void pci_set_msi_domain(struct pci_dev *dev)
2602 struct irq_domain *d;
2605 * If the platform or firmware interfaces cannot supply a
2606 * device-specific MSI domain, then inherit the default domain
2607 * from the host bridge itself.
2609 d = pci_dev_msi_domain(dev);
2610 if (!d)
2611 d = dev_get_msi_domain(&dev->bus->dev);
2613 dev_set_msi_domain(&dev->dev, d);
2616 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
2618 int ret;
2620 pci_configure_device(dev);
2622 device_initialize(&dev->dev);
2623 dev->dev.release = pci_release_dev;
2625 set_dev_node(&dev->dev, pcibus_to_node(bus));
2626 dev->dev.dma_mask = &dev->dma_mask;
2627 dev->dev.dma_parms = &dev->dma_parms;
2628 dev->dev.coherent_dma_mask = 0xffffffffull;
2630 dma_set_max_seg_size(&dev->dev, 65536);
2631 dma_set_seg_boundary(&dev->dev, 0xffffffff);
2633 pcie_failed_link_retrain(dev);
2635 /* Fix up broken headers */
2636 pci_fixup_device(pci_fixup_header, dev);
2638 pci_reassigndev_resource_alignment(dev);
2640 dev->state_saved = false;
2642 pci_init_capabilities(dev);
2645 * Add the device to our list of discovered devices
2646 * and the bus list for fixup functions, etc.
2648 down_write(&pci_bus_sem);
2649 list_add_tail(&dev->bus_list, &bus->devices);
2650 up_write(&pci_bus_sem);
2652 ret = pcibios_device_add(dev);
2653 WARN_ON(ret < 0);
2655 /* Set up MSI IRQ domain */
2656 pci_set_msi_domain(dev);
2658 /* Notifier could use PCI capabilities */
2659 dev->match_driver = false;
2660 ret = device_add(&dev->dev);
2661 WARN_ON(ret < 0);
2663 pci_npem_create(dev);
2666 struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn)
2668 struct pci_dev *dev;
2670 dev = pci_get_slot(bus, devfn);
2671 if (dev) {
2672 pci_dev_put(dev);
2673 return dev;
2676 dev = pci_scan_device(bus, devfn);
2677 if (!dev)
2678 return NULL;
2680 pci_device_add(dev, bus);
2682 return dev;
2684 EXPORT_SYMBOL(pci_scan_single_device);
2686 static int next_ari_fn(struct pci_bus *bus, struct pci_dev *dev, int fn)
2688 int pos;
2689 u16 cap = 0;
2690 unsigned int next_fn;
2692 if (!dev)
2693 return -ENODEV;
2695 pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
2696 if (!pos)
2697 return -ENODEV;
2699 pci_read_config_word(dev, pos + PCI_ARI_CAP, &cap);
2700 next_fn = PCI_ARI_CAP_NFN(cap);
2701 if (next_fn <= fn)
2702 return -ENODEV; /* protect against malformed list */
2704 return next_fn;
2707 static int next_fn(struct pci_bus *bus, struct pci_dev *dev, int fn)
2709 if (pci_ari_enabled(bus))
2710 return next_ari_fn(bus, dev, fn);
2712 if (fn >= 7)
2713 return -ENODEV;
2714 /* only multifunction devices may have more functions */
2715 if (dev && !dev->multifunction)
2716 return -ENODEV;
2718 return fn + 1;
2721 static int only_one_child(struct pci_bus *bus)
2723 struct pci_dev *bridge = bus->self;
2726 * Systems with unusual topologies set PCI_SCAN_ALL_PCIE_DEVS so
2727 * we scan for all possible devices, not just Device 0.
2729 if (pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS))
2730 return 0;
2733 * A PCIe Downstream Port normally leads to a Link with only Device
2734 * 0 on it (PCIe spec r3.1, sec 7.3.1). As an optimization, scan
2735 * only for Device 0 in that situation.
2737 if (bridge && pci_is_pcie(bridge) && pcie_downstream_port(bridge))
2738 return 1;
2740 return 0;
2744 * pci_scan_slot - Scan a PCI slot on a bus for devices
2745 * @bus: PCI bus to scan
2746 * @devfn: slot number to scan (must have zero function)
2748 * Scan a PCI slot on the specified PCI bus for devices, adding
2749 * discovered devices to the @bus->devices list. New devices
2750 * will not have is_added set.
2752 * Returns the number of new devices found.
2754 int pci_scan_slot(struct pci_bus *bus, int devfn)
2756 struct pci_dev *dev;
2757 int fn = 0, nr = 0;
2759 if (only_one_child(bus) && (devfn > 0))
2760 return 0; /* Already scanned the entire slot */
2762 do {
2763 dev = pci_scan_single_device(bus, devfn + fn);
2764 if (dev) {
2765 if (!pci_dev_is_added(dev))
2766 nr++;
2767 if (fn > 0)
2768 dev->multifunction = 1;
2769 } else if (fn == 0) {
2771 * Function 0 is required unless we are running on
2772 * a hypervisor that passes through individual PCI
2773 * functions.
2775 if (!hypervisor_isolated_pci_functions())
2776 break;
2778 fn = next_fn(bus, dev, fn);
2779 } while (fn >= 0);
2781 /* Only one slot has PCIe device */
2782 if (bus->self && nr)
2783 pcie_aspm_init_link_state(bus->self);
2785 return nr;
2787 EXPORT_SYMBOL(pci_scan_slot);
2789 static int pcie_find_smpss(struct pci_dev *dev, void *data)
2791 u8 *smpss = data;
2793 if (!pci_is_pcie(dev))
2794 return 0;
2797 * We don't have a way to change MPS settings on devices that have
2798 * drivers attached. A hot-added device might support only the minimum
2799 * MPS setting (MPS=128). Therefore, if the fabric contains a bridge
2800 * where devices may be hot-added, we limit the fabric MPS to 128 so
2801 * hot-added devices will work correctly.
2803 * However, if we hot-add a device to a slot directly below a Root
2804 * Port, it's impossible for there to be other existing devices below
2805 * the port. We don't limit the MPS in this case because we can
2806 * reconfigure MPS on both the Root Port and the hot-added device,
2807 * and there are no other devices involved.
2809 * Note that this PCIE_BUS_SAFE path assumes no peer-to-peer DMA.
2811 if (dev->is_hotplug_bridge &&
2812 pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT)
2813 *smpss = 0;
2815 if (*smpss > dev->pcie_mpss)
2816 *smpss = dev->pcie_mpss;
2818 return 0;
2821 static void pcie_write_mps(struct pci_dev *dev, int mps)
2823 int rc;
2825 if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
2826 mps = 128 << dev->pcie_mpss;
2828 if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT &&
2829 dev->bus->self)
2832 * For "Performance", the assumption is made that
2833 * downstream communication will never be larger than
2834 * the MRRS. So, the MPS only needs to be configured
2835 * for the upstream communication. This being the case,
2836 * walk from the top down and set the MPS of the child
2837 * to that of the parent bus.
2839 * Configure the device MPS with the smaller of the
2840 * device MPSS or the bridge MPS (which is assumed to be
2841 * properly configured at this point to the largest
2842 * allowable MPS based on its parent bus).
2844 mps = min(mps, pcie_get_mps(dev->bus->self));
2847 rc = pcie_set_mps(dev, mps);
2848 if (rc)
2849 pci_err(dev, "Failed attempting to set the MPS\n");
2852 static void pcie_write_mrrs(struct pci_dev *dev)
2854 int rc, mrrs;
2857 * In the "safe" case, do not configure the MRRS. There appear to be
2858 * issues with setting MRRS to 0 on a number of devices.
2860 if (pcie_bus_config != PCIE_BUS_PERFORMANCE)
2861 return;
2864 * For max performance, the MRRS must be set to the largest supported
2865 * value. However, it cannot be configured larger than the MPS the
2866 * device or the bus can support. This should already be properly
2867 * configured by a prior call to pcie_write_mps().
2869 mrrs = pcie_get_mps(dev);
2872 * MRRS is a R/W register. Invalid values can be written, but a
2873 * subsequent read will verify if the value is acceptable or not.
2874 * If the MRRS value provided is not acceptable (e.g., too large),
2875 * shrink the value until it is acceptable to the HW.
2877 while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
2878 rc = pcie_set_readrq(dev, mrrs);
2879 if (!rc)
2880 break;
2882 pci_warn(dev, "Failed attempting to set the MRRS\n");
2883 mrrs /= 2;
2886 if (mrrs < 128)
2887 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");
2890 static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
2892 int mps, orig_mps;
2894 if (!pci_is_pcie(dev))
2895 return 0;
2897 if (pcie_bus_config == PCIE_BUS_TUNE_OFF ||
2898 pcie_bus_config == PCIE_BUS_DEFAULT)
2899 return 0;
2901 mps = 128 << *(u8 *)data;
2902 orig_mps = pcie_get_mps(dev);
2904 pcie_write_mps(dev, mps);
2905 pcie_write_mrrs(dev);
2907 pci_info(dev, "Max Payload Size set to %4d/%4d (was %4d), Max Read Rq %4d\n",
2908 pcie_get_mps(dev), 128 << dev->pcie_mpss,
2909 orig_mps, pcie_get_readrq(dev));
2911 return 0;
2915 * pcie_bus_configure_settings() requires that pci_walk_bus work in a top-down,
2916 * parents then children fashion. If this changes, then this code will not
2917 * work as designed.
2919 void pcie_bus_configure_settings(struct pci_bus *bus)
2921 u8 smpss = 0;
2923 if (!bus->self)
2924 return;
2926 if (!pci_is_pcie(bus->self))
2927 return;
2930 * FIXME - Peer to peer DMA is possible, though the endpoint would need
2931 * to be aware of the MPS of the destination. To work around this,
2932 * simply force the MPS of the entire system to the smallest possible.
2934 if (pcie_bus_config == PCIE_BUS_PEER2PEER)
2935 smpss = 0;
2937 if (pcie_bus_config == PCIE_BUS_SAFE) {
2938 smpss = bus->self->pcie_mpss;
2940 pcie_find_smpss(bus->self, &smpss);
2941 pci_walk_bus(bus, pcie_find_smpss, &smpss);
2944 pcie_bus_configure_set(bus->self, &smpss);
2945 pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
2947 EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
2950 * Called after each bus is probed, but before its children are examined. This
2951 * is marked as __weak because multiple architectures define it.
2953 void __weak pcibios_fixup_bus(struct pci_bus *bus)
2955 /* nothing to do, expected to be removed in the future */
2959 * pci_scan_child_bus_extend() - Scan devices below a bus
2960 * @bus: Bus to scan for devices
2961 * @available_buses: Total number of buses available (%0 does not try to
2962 * extend beyond the minimal)
2964 * Scans devices below @bus including subordinate buses. Returns new
2965 * subordinate number including all the found devices. Passing
2966 * @available_buses causes the remaining bus space to be distributed
2967 * equally between hotplug-capable bridges to allow future extension of the
2968 * hierarchy.
2970 static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
2971 unsigned int available_buses)
2973 unsigned int used_buses, normal_bridges = 0, hotplug_bridges = 0;
2974 unsigned int start = bus->busn_res.start;
2975 unsigned int devfn, cmax, max = start;
2976 struct pci_dev *dev;
2978 dev_dbg(&bus->dev, "scanning bus\n");
2980 /* Go find them, Rover! */
2981 for (devfn = 0; devfn < 256; devfn += 8)
2982 pci_scan_slot(bus, devfn);
2984 /* Reserve buses for SR-IOV capability */
2985 used_buses = pci_iov_bus_range(bus);
2986 max += used_buses;
2989 * After performing arch-dependent fixup of the bus, look behind
2990 * all PCI-to-PCI bridges on this bus.
2992 if (!bus->is_added) {
2993 dev_dbg(&bus->dev, "fixups for bus\n");
2994 pcibios_fixup_bus(bus);
2995 bus->is_added = 1;
2999 * Calculate how many hotplug bridges and normal bridges there
3000 * are on this bus. We will distribute the additional available
3001 * buses between hotplug bridges.
3003 for_each_pci_bridge(dev, bus) {
3004 if (dev->is_hotplug_bridge)
3005 hotplug_bridges++;
3006 else
3007 normal_bridges++;
3011 * Scan bridges that are already configured. We don't touch them
3012 * unless they are misconfigured (which will be done in the second
3013 * scan below).
3015 for_each_pci_bridge(dev, bus) {
3016 cmax = max;
3017 max = pci_scan_bridge_extend(bus, dev, max, 0, 0);
3020 * Reserve one bus for each bridge now to avoid extending
3021 * hotplug bridges too much during the second scan below.
3023 used_buses++;
3024 if (max - cmax > 1)
3025 used_buses += max - cmax - 1;
3028 /* Scan bridges that need to be reconfigured */
3029 for_each_pci_bridge(dev, bus) {
3030 unsigned int buses = 0;
3032 if (!hotplug_bridges && normal_bridges == 1) {
3034 * There is only one bridge on the bus (upstream
3035 * port) so it gets all available buses which it
3036 * can then distribute to the possible hotplug
3037 * bridges below.
3039 buses = available_buses;
3040 } else if (dev->is_hotplug_bridge) {
3042 * Distribute the extra buses between hotplug
3043 * bridges if any.
3045 buses = available_buses / hotplug_bridges;
3046 buses = min(buses, available_buses - used_buses + 1);
3049 cmax = max;
3050 max = pci_scan_bridge_extend(bus, dev, cmax, buses, 1);
3051 /* One bus is already accounted so don't add it again */
3052 if (max - cmax > 1)
3053 used_buses += max - cmax - 1;
3057 * Make sure a hotplug bridge has at least the minimum requested
3058 * number of buses but allow it to grow up to the maximum available
3059 * bus number if there is room.
3061 if (bus->self && bus->self->is_hotplug_bridge) {
3062 used_buses = max_t(unsigned int, available_buses,
3063 pci_hotplug_bus_size - 1);
3064 if (max - start < used_buses) {
3065 max = start + used_buses;
3067 /* Do not allocate more buses than we have room left */
3068 if (max > bus->busn_res.end)
3069 max = bus->busn_res.end;
3071 dev_dbg(&bus->dev, "%pR extended by %#02x\n",
3072 &bus->busn_res, max - start);
3077 * We've scanned the bus and so we know all about what's on
3078 * the other side of any bridges that may be on this bus plus
3079 * any devices.
3081 * Return how far we've got finding sub-buses.
3083 dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
3084 return max;
3088 * pci_scan_child_bus() - Scan devices below a bus
3089 * @bus: Bus to scan for devices
3091 * Scans devices below @bus including subordinate buses. Returns new
3092 * subordinate number including all the found devices.
3094 unsigned int pci_scan_child_bus(struct pci_bus *bus)
3096 return pci_scan_child_bus_extend(bus, 0);
3098 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
3101 * pcibios_root_bridge_prepare - Platform-specific host bridge setup
3102 * @bridge: Host bridge to set up
3104 * Default empty implementation. Replace with an architecture-specific setup
3105 * routine, if necessary.
3107 int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
3109 return 0;
3112 void __weak pcibios_add_bus(struct pci_bus *bus)
3116 void __weak pcibios_remove_bus(struct pci_bus *bus)
3120 struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
3121 struct pci_ops *ops, void *sysdata, struct list_head *resources)
3123 int error;
3124 struct pci_host_bridge *bridge;
3126 bridge = pci_alloc_host_bridge(0);
3127 if (!bridge)
3128 return NULL;
3130 bridge->dev.parent = parent;
3132 list_splice_init(resources, &bridge->windows);
3133 bridge->sysdata = sysdata;
3134 bridge->busnr = bus;
3135 bridge->ops = ops;
3137 error = pci_register_host_bridge(bridge);
3138 if (error < 0)
3139 goto err_out;
3141 return bridge->bus;
3143 err_out:
3144 put_device(&bridge->dev);
3145 return NULL;
3147 EXPORT_SYMBOL_GPL(pci_create_root_bus);
3149 int pci_host_probe(struct pci_host_bridge *bridge)
3151 struct pci_bus *bus, *child;
3152 int ret;
3154 pci_lock_rescan_remove();
3155 ret = pci_scan_root_bus_bridge(bridge);
3156 pci_unlock_rescan_remove();
3157 if (ret < 0) {
3158 dev_err(bridge->dev.parent, "Scanning root bridge failed");
3159 return ret;
3162 bus = bridge->bus;
3164 /* If we must preserve the resource configuration, claim now */
3165 if (bridge->preserve_config)
3166 pci_bus_claim_resources(bus);
3169 * Assign whatever was left unassigned. If we didn't claim above,
3170 * this will reassign everything.
3172 pci_assign_unassigned_root_bus_resources(bus);
3174 list_for_each_entry(child, &bus->children, node)
3175 pcie_bus_configure_settings(child);
3177 pci_lock_rescan_remove();
3178 pci_bus_add_devices(bus);
3179 pci_unlock_rescan_remove();
3182 * Ensure pm_runtime_enable() is called for the controller drivers
3183 * before calling pci_host_probe(). The PM framework expects that
3184 * if the parent device supports runtime PM, it will be enabled
3185 * before child runtime PM is enabled.
3187 pm_runtime_set_active(&bridge->dev);
3188 pm_runtime_no_callbacks(&bridge->dev);
3189 devm_pm_runtime_enable(&bridge->dev);
3191 return 0;
3193 EXPORT_SYMBOL_GPL(pci_host_probe);
3195 int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
3197 struct resource *res = &b->busn_res;
3198 struct resource *parent_res, *conflict;
3200 res->start = bus;
3201 res->end = bus_max;
3202 res->flags = IORESOURCE_BUS;
3204 if (!pci_is_root_bus(b))
3205 parent_res = &b->parent->busn_res;
3206 else {
3207 parent_res = get_pci_domain_busn_res(pci_domain_nr(b));
3208 res->flags |= IORESOURCE_PCI_FIXED;
3211 conflict = request_resource_conflict(parent_res, res);
3213 if (conflict)
3214 dev_info(&b->dev,
3215 "busn_res: can not insert %pR under %s%pR (conflicts with %s %pR)\n",
3216 res, pci_is_root_bus(b) ? "domain " : "",
3217 parent_res, conflict->name, conflict);
3219 return conflict == NULL;
3222 int pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
3224 struct resource *res = &b->busn_res;
3225 struct resource old_res = *res;
3226 resource_size_t size;
3227 int ret;
3229 if (res->start > bus_max)
3230 return -EINVAL;
3232 size = bus_max - res->start + 1;
3233 ret = adjust_resource(res, res->start, size);
3234 dev_info(&b->dev, "busn_res: %pR end %s updated to %02x\n",
3235 &old_res, ret ? "can not be" : "is", bus_max);
3237 if (!ret && !res->parent)
3238 pci_bus_insert_busn_res(b, res->start, res->end);
3240 return ret;
3243 void pci_bus_release_busn_res(struct pci_bus *b)
3245 struct resource *res = &b->busn_res;
3246 int ret;
3248 if (!res->flags || !res->parent)
3249 return;
3251 ret = release_resource(res);
3252 dev_info(&b->dev, "busn_res: %pR %s released\n",
3253 res, ret ? "can not be" : "is");
3256 int pci_scan_root_bus_bridge(struct pci_host_bridge *bridge)
3258 struct resource_entry *window;
3259 bool found = false;
3260 struct pci_bus *b;
3261 int max, bus, ret;
3263 if (!bridge)
3264 return -EINVAL;
3266 resource_list_for_each_entry(window, &bridge->windows)
3267 if (window->res->flags & IORESOURCE_BUS) {
3268 bridge->busnr = window->res->start;
3269 found = true;
3270 break;
3273 ret = pci_register_host_bridge(bridge);
3274 if (ret < 0)
3275 return ret;
3277 b = bridge->bus;
3278 bus = bridge->busnr;
3280 if (!found) {
3281 dev_info(&b->dev,
3282 "No busn resource found for root bus, will use [bus %02x-ff]\n",
3283 bus);
3284 pci_bus_insert_busn_res(b, bus, 255);
3287 max = pci_scan_child_bus(b);
3289 if (!found)
3290 pci_bus_update_busn_res_end(b, max);
3292 return 0;
3294 EXPORT_SYMBOL(pci_scan_root_bus_bridge);
3296 struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
3297 struct pci_ops *ops, void *sysdata, struct list_head *resources)
3299 struct resource_entry *window;
3300 bool found = false;
3301 struct pci_bus *b;
3302 int max;
3304 resource_list_for_each_entry(window, resources)
3305 if (window->res->flags & IORESOURCE_BUS) {
3306 found = true;
3307 break;
3310 b = pci_create_root_bus(parent, bus, ops, sysdata, resources);
3311 if (!b)
3312 return NULL;
3314 if (!found) {
3315 dev_info(&b->dev,
3316 "No busn resource found for root bus, will use [bus %02x-ff]\n",
3317 bus);
3318 pci_bus_insert_busn_res(b, bus, 255);
3321 max = pci_scan_child_bus(b);
3323 if (!found)
3324 pci_bus_update_busn_res_end(b, max);
3326 return b;
3328 EXPORT_SYMBOL(pci_scan_root_bus);
3330 struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
3331 void *sysdata)
3333 LIST_HEAD(resources);
3334 struct pci_bus *b;
3336 pci_add_resource(&resources, &ioport_resource);
3337 pci_add_resource(&resources, &iomem_resource);
3338 pci_add_resource(&resources, &busn_resource);
3339 b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
3340 if (b) {
3341 pci_scan_child_bus(b);
3342 } else {
3343 pci_free_resource_list(&resources);
3345 return b;
3347 EXPORT_SYMBOL(pci_scan_bus);
3350 * pci_rescan_bus_bridge_resize - Scan a PCI bus for devices
3351 * @bridge: PCI bridge for the bus to scan
3353 * Scan a PCI bus and child buses for new devices, add them,
3354 * and enable them, resizing bridge mmio/io resource if necessary
3355 * and possible. The caller must ensure the child devices are already
3356 * removed for resizing to occur.
3358 * Returns the max number of subordinate bus discovered.
3360 unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
3362 unsigned int max;
3363 struct pci_bus *bus = bridge->subordinate;
3365 max = pci_scan_child_bus(bus);
3367 pci_assign_unassigned_bridge_resources(bridge);
3369 pci_bus_add_devices(bus);
3371 return max;
3375 * pci_rescan_bus - Scan a PCI bus for devices
3376 * @bus: PCI bus to scan
3378 * Scan a PCI bus and child buses for new devices, add them,
3379 * and enable them.
3381 * Returns the max number of subordinate bus discovered.
3383 unsigned int pci_rescan_bus(struct pci_bus *bus)
3385 unsigned int max;
3387 max = pci_scan_child_bus(bus);
3388 pci_assign_unassigned_bus_resources(bus);
3389 pci_bus_add_devices(bus);
3391 return max;
3393 EXPORT_SYMBOL_GPL(pci_rescan_bus);
3396 * pci_rescan_bus(), pci_rescan_bus_bridge_resize() and PCI device removal
3397 * routines should always be executed under this mutex.
3399 static DEFINE_MUTEX(pci_rescan_remove_lock);
3401 void pci_lock_rescan_remove(void)
3403 mutex_lock(&pci_rescan_remove_lock);
3405 EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);
3407 void pci_unlock_rescan_remove(void)
3409 mutex_unlock(&pci_rescan_remove_lock);
3411 EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);
3413 static int __init pci_sort_bf_cmp(const struct device *d_a,
3414 const struct device *d_b)
3416 const struct pci_dev *a = to_pci_dev(d_a);
3417 const struct pci_dev *b = to_pci_dev(d_b);
3419 if (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
3420 else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return 1;
3422 if (a->bus->number < b->bus->number) return -1;
3423 else if (a->bus->number > b->bus->number) return 1;
3425 if (a->devfn < b->devfn) return -1;
3426 else if (a->devfn > b->devfn) return 1;
3428 return 0;
3431 void __init pci_sort_breadthfirst(void)
3433 bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
3436 int pci_hp_add_bridge(struct pci_dev *dev)
3438 struct pci_bus *parent = dev->bus;
3439 int busnr, start = parent->busn_res.start;
3440 unsigned int available_buses = 0;
3441 int end = parent->busn_res.end;
3443 for (busnr = start; busnr <= end; busnr++) {
3444 if (!pci_find_bus(pci_domain_nr(parent), busnr))
3445 break;
3447 if (busnr-- > end) {
3448 pci_err(dev, "No bus number available for hot-added bridge\n");
3449 return -1;
3452 /* Scan bridges that are already configured */
3453 busnr = pci_scan_bridge(parent, dev, busnr, 0);
3456 * Distribute the available bus numbers between hotplug-capable
3457 * bridges to make extending the chain later possible.
3459 available_buses = end - busnr;
3461 /* Scan bridges that need to be reconfigured */
3462 pci_scan_bridge_extend(parent, dev, busnr, available_buses, 1);
3464 if (!dev->subordinate)
3465 return -1;
3467 return 0;
3469 EXPORT_SYMBOL_GPL(pci_hp_add_bridge);