2
* probe.c - PCI detection and setup code
5
#include <linux/kernel.h>
6
#include <linux/delay.h>
7
#include <linux/init.h>
9
#include <linux/slab.h>
10
#include <linux/module.h>
11
#include <linux/cpumask.h>
12
#include <linux/pci-aspm.h>
15
#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
16
#define CARDBUS_RESERVE_BUSNR 3
18
/* Ugh. Need to stop exporting this to modules. */
19
LIST_HEAD(pci_root_buses);
20
EXPORT_SYMBOL(pci_root_buses);
23
static int find_anything(struct device *dev, void *data)
29
* Some device drivers need know if pci is initiated.
30
* Basically, we think pci is not initiated when there
31
* is no device to be found on the pci_bus_type.
33
int no_pci_devices(void)
38
dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
39
no_devices = (dev == NULL);
43
EXPORT_SYMBOL(no_pci_devices);
46
* PCI Bus Class Devices
48
static ssize_t pci_bus_show_cpuaffinity(struct device *dev,
50
struct device_attribute *attr,
54
const struct cpumask *cpumask;
56
cpumask = cpumask_of_pcibus(to_pci_bus(dev));
58
cpulist_scnprintf(buf, PAGE_SIZE-2, cpumask) :
59
cpumask_scnprintf(buf, PAGE_SIZE-2, cpumask);
65
static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
66
struct device_attribute *attr,
69
return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
72
static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
73
struct device_attribute *attr,
76
return pci_bus_show_cpuaffinity(dev, 1, attr, buf);
79
DEVICE_ATTR(cpuaffinity, S_IRUGO, pci_bus_show_cpumaskaffinity, NULL);
80
DEVICE_ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL);
85
static void release_pcibus_dev(struct device *dev)
87
struct pci_bus *pci_bus = to_pci_bus(dev);
90
put_device(pci_bus->bridge);
91
pci_bus_remove_resources(pci_bus);
95
static struct class pcibus_class = {
97
.dev_release = &release_pcibus_dev,
100
static int __init pcibus_class_init(void)
102
return class_register(&pcibus_class);
104
postcore_initcall(pcibus_class_init);
107
* Translate the low bits of the PCI base
108
* to the resource type
110
static inline unsigned int pci_calc_resource_flags(unsigned int flags)
112
if (flags & PCI_BASE_ADDRESS_SPACE_IO)
113
return IORESOURCE_IO;
115
if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
116
return IORESOURCE_MEM | IORESOURCE_PREFETCH;
118
return IORESOURCE_MEM;
121
static u64 pci_size(u64 base, u64 maxbase, u64 mask)
123
u64 size = mask & maxbase; /* Find the significant bits */
127
/* Get the lowest of them to find the decode size, and
128
from that the extent. */
129
size = (size & ~(size-1)) - 1;
131
/* base == maxbase can be valid only if the BAR has
132
already been programmed with all 1s. */
133
if (base == maxbase && ((base | size) & mask) != mask)
139
static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
141
if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
142
res->flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
146
res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
148
if (res->flags & PCI_BASE_ADDRESS_MEM_TYPE_64)
149
return pci_bar_mem64;
150
return pci_bar_mem32;
154
* pci_read_base - read a PCI BAR
155
* @dev: the PCI device
156
* @type: type of the BAR
157
* @res: resource buffer to be filled in
158
* @pos: BAR position in the config space
160
* Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
162
int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
163
struct resource *res, unsigned int pos)
167
mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
169
res->name = pci_name(dev);
171
pci_read_config_dword(dev, pos, &l);
172
pci_write_config_dword(dev, pos, l | mask);
173
pci_read_config_dword(dev, pos, &sz);
174
pci_write_config_dword(dev, pos, l);
177
* All bits set in sz means the device isn't working properly.
178
* If the BAR isn't implemented, all bits must be 0. If it's a
179
* memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
182
if (!sz || sz == 0xffffffff)
186
* I don't know how l can have all bits set. Copied from old code.
187
* Maybe it fixes a bug on some ancient platform.
192
if (type == pci_bar_unknown) {
193
type = decode_bar(res, l);
194
res->flags |= pci_calc_resource_flags(l) | IORESOURCE_SIZEALIGN;
195
if (type == pci_bar_io) {
196
l &= PCI_BASE_ADDRESS_IO_MASK;
197
mask = PCI_BASE_ADDRESS_IO_MASK & IO_SPACE_LIMIT;
199
l &= PCI_BASE_ADDRESS_MEM_MASK;
200
mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
203
res->flags |= (l & IORESOURCE_ROM_ENABLE);
204
l &= PCI_ROM_ADDRESS_MASK;
205
mask = (u32)PCI_ROM_ADDRESS_MASK;
208
if (type == pci_bar_mem64) {
211
u64 mask64 = mask | (u64)~0 << 32;
213
pci_read_config_dword(dev, pos + 4, &l);
214
pci_write_config_dword(dev, pos + 4, ~0);
215
pci_read_config_dword(dev, pos + 4, &sz);
216
pci_write_config_dword(dev, pos + 4, l);
218
l64 |= ((u64)l << 32);
219
sz64 |= ((u64)sz << 32);
221
sz64 = pci_size(l64, sz64, mask64);
226
if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
227
dev_err(&dev->dev, "reg %x: can't handle 64-bit BAR\n",
232
res->flags |= IORESOURCE_MEM_64;
233
if ((sizeof(resource_size_t) < 8) && l) {
234
/* Address above 32-bit boundary; disable the BAR */
235
pci_write_config_dword(dev, pos, 0);
236
pci_write_config_dword(dev, pos + 4, 0);
241
res->end = l64 + sz64;
242
dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n",
246
sz = pci_size(l, sz, mask);
254
dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n", pos, res);
258
return (type == pci_bar_mem64) ? 1 : 0;
264
static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
266
unsigned int pos, reg;
268
for (pos = 0; pos < howmany; pos++) {
269
struct resource *res = &dev->resource[pos];
270
reg = PCI_BASE_ADDRESS_0 + (pos << 2);
271
pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
275
struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
276
dev->rom_base_reg = rom;
277
res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
278
IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
279
IORESOURCE_SIZEALIGN;
280
__pci_read_base(dev, pci_bar_mem32, res, rom);
284
static void __devinit pci_read_bridge_io(struct pci_bus *child)
286
struct pci_dev *dev = child->self;
287
u8 io_base_lo, io_limit_lo;
288
unsigned long base, limit;
289
struct resource *res;
291
res = child->resource[0];
292
pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
293
pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
294
base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
295
limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
297
if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
298
u16 io_base_hi, io_limit_hi;
299
pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
300
pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
301
base |= (io_base_hi << 16);
302
limit |= (io_limit_hi << 16);
305
if (base && base <= limit) {
306
res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
310
res->end = limit + 0xfff;
311
dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
313
dev_printk(KERN_DEBUG, &dev->dev,
314
" bridge window [io %#06lx-%#06lx] (disabled)\n",
319
static void __devinit pci_read_bridge_mmio(struct pci_bus *child)
321
struct pci_dev *dev = child->self;
322
u16 mem_base_lo, mem_limit_lo;
323
unsigned long base, limit;
324
struct resource *res;
326
res = child->resource[1];
327
pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
328
pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
329
base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
330
limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
331
if (base && base <= limit) {
332
res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
334
res->end = limit + 0xfffff;
335
dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
337
dev_printk(KERN_DEBUG, &dev->dev,
338
" bridge window [mem %#010lx-%#010lx] (disabled)\n",
339
base, limit + 0xfffff);
343
static void __devinit pci_read_bridge_mmio_pref(struct pci_bus *child)
345
struct pci_dev *dev = child->self;
346
u16 mem_base_lo, mem_limit_lo;
347
unsigned long base, limit;
348
struct resource *res;
350
res = child->resource[2];
351
pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
352
pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
353
base = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
354
limit = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
356
if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
357
u32 mem_base_hi, mem_limit_hi;
358
pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
359
pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
362
* Some bridges set the base > limit by default, and some
363
* (broken) BIOSes do not initialize them. If we find
364
* this, just assume they are not being used.
366
if (mem_base_hi <= mem_limit_hi) {
367
#if BITS_PER_LONG == 64
368
base |= ((long) mem_base_hi) << 32;
369
limit |= ((long) mem_limit_hi) << 32;
371
if (mem_base_hi || mem_limit_hi) {
372
dev_err(&dev->dev, "can't handle 64-bit "
373
"address space for bridge\n");
379
if (base && base <= limit) {
380
res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
381
IORESOURCE_MEM | IORESOURCE_PREFETCH;
382
if (res->flags & PCI_PREF_RANGE_TYPE_64)
383
res->flags |= IORESOURCE_MEM_64;
385
res->end = limit + 0xfffff;
386
dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
388
dev_printk(KERN_DEBUG, &dev->dev,
389
" bridge window [mem %#010lx-%#010lx pref] (disabled)\n",
390
base, limit + 0xfffff);
394
void __devinit pci_read_bridge_bases(struct pci_bus *child)
396
struct pci_dev *dev = child->self;
397
struct resource *res;
400
if (pci_is_root_bus(child)) /* It's a host bus, nothing to read */
403
dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
404
child->secondary, child->subordinate,
405
dev->transparent ? " (subtractive decode)" : "");
407
pci_bus_remove_resources(child);
408
for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
409
child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
411
pci_read_bridge_io(child);
412
pci_read_bridge_mmio(child);
413
pci_read_bridge_mmio_pref(child);
415
if (dev->transparent) {
416
pci_bus_for_each_resource(child->parent, res, i) {
418
pci_bus_add_resource(child, res,
419
PCI_SUBTRACTIVE_DECODE);
420
dev_printk(KERN_DEBUG, &dev->dev,
421
" bridge window %pR (subtractive decode)\n",
428
static struct pci_bus * pci_alloc_bus(void)
432
b = kzalloc(sizeof(*b), GFP_KERNEL);
434
INIT_LIST_HEAD(&b->node);
435
INIT_LIST_HEAD(&b->children);
436
INIT_LIST_HEAD(&b->devices);
437
INIT_LIST_HEAD(&b->slots);
438
INIT_LIST_HEAD(&b->resources);
439
b->max_bus_speed = PCI_SPEED_UNKNOWN;
440
b->cur_bus_speed = PCI_SPEED_UNKNOWN;
445
static unsigned char pcix_bus_speed[] = {
446
PCI_SPEED_UNKNOWN, /* 0 */
447
PCI_SPEED_66MHz_PCIX, /* 1 */
448
PCI_SPEED_100MHz_PCIX, /* 2 */
449
PCI_SPEED_133MHz_PCIX, /* 3 */
450
PCI_SPEED_UNKNOWN, /* 4 */
451
PCI_SPEED_66MHz_PCIX_ECC, /* 5 */
452
PCI_SPEED_100MHz_PCIX_ECC, /* 6 */
453
PCI_SPEED_133MHz_PCIX_ECC, /* 7 */
454
PCI_SPEED_UNKNOWN, /* 8 */
455
PCI_SPEED_66MHz_PCIX_266, /* 9 */
456
PCI_SPEED_100MHz_PCIX_266, /* A */
457
PCI_SPEED_133MHz_PCIX_266, /* B */
458
PCI_SPEED_UNKNOWN, /* C */
459
PCI_SPEED_66MHz_PCIX_533, /* D */
460
PCI_SPEED_100MHz_PCIX_533, /* E */
461
PCI_SPEED_133MHz_PCIX_533 /* F */
464
static unsigned char pcie_link_speed[] = {
465
PCI_SPEED_UNKNOWN, /* 0 */
466
PCIE_SPEED_2_5GT, /* 1 */
467
PCIE_SPEED_5_0GT, /* 2 */
468
PCIE_SPEED_8_0GT, /* 3 */
469
PCI_SPEED_UNKNOWN, /* 4 */
470
PCI_SPEED_UNKNOWN, /* 5 */
471
PCI_SPEED_UNKNOWN, /* 6 */
472
PCI_SPEED_UNKNOWN, /* 7 */
473
PCI_SPEED_UNKNOWN, /* 8 */
474
PCI_SPEED_UNKNOWN, /* 9 */
475
PCI_SPEED_UNKNOWN, /* A */
476
PCI_SPEED_UNKNOWN, /* B */
477
PCI_SPEED_UNKNOWN, /* C */
478
PCI_SPEED_UNKNOWN, /* D */
479
PCI_SPEED_UNKNOWN, /* E */
480
PCI_SPEED_UNKNOWN /* F */
483
void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
485
bus->cur_bus_speed = pcie_link_speed[linksta & 0xf];
487
EXPORT_SYMBOL_GPL(pcie_update_link_speed);
489
static unsigned char agp_speeds[] = {
497
static enum pci_bus_speed agp_speed(int agp3, int agpstat)
503
else if (agpstat & 2)
505
else if (agpstat & 1)
517
return agp_speeds[index];
521
static void pci_set_bus_speed(struct pci_bus *bus)
523
struct pci_dev *bridge = bus->self;
526
pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
528
pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
532
pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
533
bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
535
pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
536
bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
539
pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
542
enum pci_bus_speed max;
543
pci_read_config_word(bridge, pos + 2, &status);
545
if (status & 0x8000) {
546
max = PCI_SPEED_133MHz_PCIX_533;
547
} else if (status & 0x4000) {
548
max = PCI_SPEED_133MHz_PCIX_266;
549
} else if (status & 0x0002) {
550
if (((status >> 12) & 0x3) == 2) {
551
max = PCI_SPEED_133MHz_PCIX_ECC;
553
max = PCI_SPEED_133MHz_PCIX;
556
max = PCI_SPEED_66MHz_PCIX;
559
bus->max_bus_speed = max;
560
bus->cur_bus_speed = pcix_bus_speed[(status >> 6) & 0xf];
565
pos = pci_find_capability(bridge, PCI_CAP_ID_EXP);
570
pci_read_config_dword(bridge, pos + PCI_EXP_LNKCAP, &linkcap);
571
bus->max_bus_speed = pcie_link_speed[linkcap & 0xf];
573
pci_read_config_word(bridge, pos + PCI_EXP_LNKSTA, &linksta);
574
pcie_update_link_speed(bus, linksta);
579
static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
580
struct pci_dev *bridge, int busnr)
582
struct pci_bus *child;
586
* Allocate a new bus, and inherit stuff from the parent..
588
child = pci_alloc_bus();
592
child->parent = parent;
593
child->ops = parent->ops;
594
child->sysdata = parent->sysdata;
595
child->bus_flags = parent->bus_flags;
597
/* initialize some portions of the bus device, but don't register it
598
* now as the parent is not properly set up yet. This device will get
599
* registered later in pci_bus_add_devices()
601
child->dev.class = &pcibus_class;
602
dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
605
* Set up the primary, secondary and subordinate
608
child->number = child->secondary = busnr;
609
child->primary = parent->secondary;
610
child->subordinate = 0xff;
615
child->self = bridge;
616
child->bridge = get_device(&bridge->dev);
618
pci_set_bus_speed(child);
620
/* Set up default resource pointers and names.. */
621
for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
622
child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
623
child->resource[i]->name = child->name;
625
bridge->subordinate = child;
630
struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
632
struct pci_bus *child;
634
child = pci_alloc_child_bus(parent, dev, busnr);
636
down_write(&pci_bus_sem);
637
list_add_tail(&child->node, &parent->children);
638
up_write(&pci_bus_sem);
643
static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
645
struct pci_bus *parent = child->parent;
647
/* Attempts to fix that up are really dangerous unless
648
we're going to re-assign all bus numbers. */
649
if (!pcibios_assign_all_busses())
652
while (parent->parent && parent->subordinate < max) {
653
parent->subordinate = max;
654
pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
655
parent = parent->parent;
660
* If it's a bridge, configure it and scan the bus behind it.
661
* For CardBus bridges, we don't scan behind as the devices will
662
* be handled by the bridge driver itself.
664
* We need to process bridges in two passes -- first we scan those
665
* already configured by the BIOS and after we are done with all of
666
* them, we proceed to assigning numbers to the remaining buses in
667
* order to avoid overlaps between old and new bus numbers.
669
int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
671
struct pci_bus *child;
672
int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
675
u8 primary, secondary, subordinate;
678
pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
679
primary = buses & 0xFF;
680
secondary = (buses >> 8) & 0xFF;
681
subordinate = (buses >> 16) & 0xFF;
683
dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
684
secondary, subordinate, pass);
686
/* Check if setup is sensible at all */
688
(primary != bus->number || secondary <= bus->number)) {
689
dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n");
693
/* Disable MasterAbortMode during probing to avoid reporting
694
of bus errors (in some architectures) */
695
pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
696
pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
697
bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
699
if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
700
!is_cardbus && !broken) {
703
* Bus already configured by firmware, process it in the first
704
* pass and just note the configuration.
710
* If we already got to this bus through a different bridge,
711
* don't re-add it. This can happen with the i450NX chipset.
713
* However, we continue to descend down the hierarchy and
714
* scan remaining child buses.
716
child = pci_find_bus(pci_domain_nr(bus), secondary);
718
child = pci_add_new_bus(bus, dev, secondary);
721
child->primary = primary;
722
child->subordinate = subordinate;
723
child->bridge_ctl = bctl;
726
cmax = pci_scan_child_bus(child);
729
if (child->subordinate > max)
730
max = child->subordinate;
733
* We need to assign a number to this bus which we always
734
* do in the second pass.
737
if (pcibios_assign_all_busses() || broken)
738
/* Temporarily disable forwarding of the
739
configuration cycles on all bridges in
740
this bus segment to avoid possible
741
conflicts in the second pass between two
742
bridges programmed with overlapping
744
pci_write_config_dword(dev, PCI_PRIMARY_BUS,
750
pci_write_config_word(dev, PCI_STATUS, 0xffff);
752
/* Prevent assigning a bus number that already exists.
753
* This can happen when a bridge is hot-plugged */
754
if (pci_find_bus(pci_domain_nr(bus), max+1))
756
child = pci_add_new_bus(bus, dev, ++max);
757
buses = (buses & 0xff000000)
758
| ((unsigned int)(child->primary) << 0)
759
| ((unsigned int)(child->secondary) << 8)
760
| ((unsigned int)(child->subordinate) << 16);
763
* yenta.c forces a secondary latency timer of 176.
764
* Copy that behaviour here.
767
buses &= ~0xff000000;
768
buses |= CARDBUS_LATENCY_TIMER << 24;
772
* We need to blast all three values with a single write.
774
pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
777
child->bridge_ctl = bctl;
779
* Adjust subordinate busnr in parent buses.
780
* We do this before scanning for children because
781
* some devices may not be detected if the bios
784
pci_fixup_parent_subordinate_busnr(child, max);
785
/* Now we can scan all subordinate buses... */
786
max = pci_scan_child_bus(child);
788
* now fix it up again since we have found
789
* the real value of max.
791
pci_fixup_parent_subordinate_busnr(child, max);
794
* For CardBus bridges, we leave 4 bus numbers
795
* as cards with a PCI-to-PCI bridge can be
798
for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
799
struct pci_bus *parent = bus;
800
if (pci_find_bus(pci_domain_nr(bus),
803
while (parent->parent) {
804
if ((!pcibios_assign_all_busses()) &&
805
(parent->subordinate > max) &&
806
(parent->subordinate <= max+i)) {
809
parent = parent->parent;
813
* Often, there are two cardbus bridges
814
* -- try to leave one valid bus number
822
pci_fixup_parent_subordinate_busnr(child, max);
825
* Set the subordinate bus number to its real value.
827
child->subordinate = max;
828
pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
832
(is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
833
pci_domain_nr(bus), child->number);
835
/* Has only triggered on CardBus, fixup is in yenta_socket */
836
while (bus->parent) {
837
if ((child->subordinate > bus->subordinate) ||
838
(child->number > bus->subordinate) ||
839
(child->number < bus->number) ||
840
(child->subordinate < bus->number)) {
841
dev_info(&child->dev, "[bus %02x-%02x] %s "
842
"hidden behind%s bridge %s [bus %02x-%02x]\n",
843
child->number, child->subordinate,
844
(bus->number > child->subordinate &&
845
bus->subordinate < child->number) ?
846
"wholly" : "partially",
847
bus->self->transparent ? " transparent" : "",
849
bus->number, bus->subordinate);
855
pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
861
* Read interrupt line and base address registers.
862
* The architecture-dependent code can tweak these, of course.
864
static void pci_read_irq(struct pci_dev *dev)
868
pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
871
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
875
void set_pcie_port_type(struct pci_dev *pdev)
880
pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
884
pdev->pcie_cap = pos;
885
pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, ®16);
886
pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
889
void set_pcie_hotplug_bridge(struct pci_dev *pdev)
895
pos = pci_pcie_cap(pdev);
898
pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, ®16);
899
if (!(reg16 & PCI_EXP_FLAGS_SLOT))
901
pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, ®32);
902
if (reg32 & PCI_EXP_SLTCAP_HPC)
903
pdev->is_hotplug_bridge = 1;
906
#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
909
* pci_setup_device - fill in class and map information of a device
910
* @dev: the device structure to fill
912
* Initialize the device structure with information about the device's
913
* vendor,class,memory and IO-space addresses,IRQ lines etc.
914
* Called at initialisation of the PCI subsystem and by CardBus services.
915
* Returns 0 on success and negative if unknown type of device (not normal,
916
* bridge or CardBus).
918
int pci_setup_device(struct pci_dev *dev)
922
struct pci_slot *slot;
925
if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
928
dev->sysdata = dev->bus->sysdata;
929
dev->dev.parent = dev->bus->bridge;
930
dev->dev.bus = &pci_bus_type;
931
dev->hdr_type = hdr_type & 0x7f;
932
dev->multifunction = !!(hdr_type & 0x80);
933
dev->error_state = pci_channel_io_normal;
934
set_pcie_port_type(dev);
936
list_for_each_entry(slot, &dev->bus->slots, list)
937
if (PCI_SLOT(dev->devfn) == slot->number)
940
/* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
941
set this higher, assuming the system even supports it. */
942
dev->dma_mask = 0xffffffff;
944
dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
945
dev->bus->number, PCI_SLOT(dev->devfn),
946
PCI_FUNC(dev->devfn));
948
pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
949
dev->revision = class & 0xff;
950
class >>= 8; /* upper 3 bytes */
954
dev_dbg(&dev->dev, "found [%04x:%04x] class %06x header type %02x\n",
955
dev->vendor, dev->device, class, dev->hdr_type);
957
/* need to have dev->class ready */
958
dev->cfg_size = pci_cfg_space_size(dev);
960
/* "Unknown power state" */
961
dev->current_state = PCI_UNKNOWN;
963
/* Early fixups, before probing the BARs */
964
pci_fixup_device(pci_fixup_early, dev);
965
/* device class may be changed after fixup */
966
class = dev->class >> 8;
968
switch (dev->hdr_type) { /* header type */
969
case PCI_HEADER_TYPE_NORMAL: /* standard header */
970
if (class == PCI_CLASS_BRIDGE_PCI)
973
pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
974
pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
975
pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
978
* Do the ugly legacy mode stuff here rather than broken chip
979
* quirk code. Legacy mode ATA controllers have fixed
980
* addresses. These are not always echoed in BAR0-3, and
981
* BAR0-3 in a few cases contain junk!
983
if (class == PCI_CLASS_STORAGE_IDE) {
985
pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
986
if ((progif & 1) == 0) {
987
dev->resource[0].start = 0x1F0;
988
dev->resource[0].end = 0x1F7;
989
dev->resource[0].flags = LEGACY_IO_RESOURCE;
990
dev->resource[1].start = 0x3F6;
991
dev->resource[1].end = 0x3F6;
992
dev->resource[1].flags = LEGACY_IO_RESOURCE;
994
if ((progif & 4) == 0) {
995
dev->resource[2].start = 0x170;
996
dev->resource[2].end = 0x177;
997
dev->resource[2].flags = LEGACY_IO_RESOURCE;
998
dev->resource[3].start = 0x376;
999
dev->resource[3].end = 0x376;
1000
dev->resource[3].flags = LEGACY_IO_RESOURCE;
1005
case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
1006
if (class != PCI_CLASS_BRIDGE_PCI)
1008
/* The PCI-to-PCI bridge spec requires that subtractive
1009
decoding (i.e. transparent) bridge must have programming
1010
interface code of 0x01. */
1012
dev->transparent = ((dev->class & 0xff) == 1);
1013
pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
1014
set_pcie_hotplug_bridge(dev);
1015
pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
1017
pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
1018
pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
1022
case PCI_HEADER_TYPE_CARDBUS: /* CardBus bridge header */
1023
if (class != PCI_CLASS_BRIDGE_CARDBUS)
1026
pci_read_bases(dev, 1, 0);
1027
pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1028
pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
1031
default: /* unknown header */
1032
dev_err(&dev->dev, "unknown header type %02x, "
1033
"ignoring device\n", dev->hdr_type);
1037
dev_err(&dev->dev, "ignoring class %02x (doesn't match header "
1038
"type %02x)\n", class, dev->hdr_type);
1039
dev->class = PCI_CLASS_NOT_DEFINED;
1042
/* We found a fine healthy device, go go go... */
1046
static void pci_release_capabilities(struct pci_dev *dev)
1048
pci_vpd_release(dev);
1049
pci_iov_release(dev);
1053
* pci_release_dev - free a pci device structure when all users of it are finished.
1054
* @dev: device that's been disconnected
1056
* Will be called only by the device core when all users of this pci device are
1059
static void pci_release_dev(struct device *dev)
1061
struct pci_dev *pci_dev;
1063
pci_dev = to_pci_dev(dev);
1064
pci_release_capabilities(pci_dev);
1069
* pci_cfg_space_size - get the configuration space size of the PCI device.
1072
* Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1073
* have 4096 bytes. Even if the device is capable, that doesn't mean we can
1074
* access it. Maybe we don't have a way to generate extended config space
1075
* accesses, or the device is behind a reverse Express bridge. So we try
1076
* reading the dword at 0x100 which must either be 0 or a valid extended
1077
* capability header.
1079
int pci_cfg_space_size_ext(struct pci_dev *dev)
1082
int pos = PCI_CFG_SPACE_SIZE;
1084
if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1086
if (status == 0xffffffff)
1089
return PCI_CFG_SPACE_EXP_SIZE;
1092
return PCI_CFG_SPACE_SIZE;
1095
int pci_cfg_space_size(struct pci_dev *dev)
1101
class = dev->class >> 8;
1102
if (class == PCI_CLASS_BRIDGE_HOST)
1103
return pci_cfg_space_size_ext(dev);
1105
pos = pci_pcie_cap(dev);
1107
pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1111
pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1112
if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1116
return pci_cfg_space_size_ext(dev);
1119
return PCI_CFG_SPACE_SIZE;
1122
static void pci_release_bus_bridge_dev(struct device *dev)
1127
struct pci_dev *alloc_pci_dev(void)
1129
struct pci_dev *dev;
1131
dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1135
INIT_LIST_HEAD(&dev->bus_list);
1139
EXPORT_SYMBOL(alloc_pci_dev);
1142
* Read the config data for a PCI device, sanity-check it
1143
* and fill in the dev structure...
1145
static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1147
struct pci_dev *dev;
1151
if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1154
/* some broken boards return 0 or ~0 if a slot is empty: */
1155
if (l == 0xffffffff || l == 0x00000000 ||
1156
l == 0x0000ffff || l == 0xffff0000)
1159
/* Configuration request Retry Status */
1160
while (l == 0xffff0001) {
1163
if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1165
/* Card hasn't responded in 60 seconds? Must be stuck. */
1166
if (delay > 60 * 1000) {
1167
printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
1168
"responding\n", pci_domain_nr(bus),
1169
bus->number, PCI_SLOT(devfn),
1175
dev = alloc_pci_dev();
1181
dev->vendor = l & 0xffff;
1182
dev->device = (l >> 16) & 0xffff;
1184
if (pci_setup_device(dev)) {
1192
static void pci_init_capabilities(struct pci_dev *dev)
1194
/* MSI/MSI-X list */
1195
pci_msi_init_pci_dev(dev);
1197
/* Buffers for saving PCIe and PCI-X capabilities */
1198
pci_allocate_cap_save_buffers(dev);
1200
/* Power Management */
1202
platform_pci_wakeup_init(dev);
1204
/* Vital Product Data */
1205
pci_vpd_pci22_init(dev);
1207
/* Alternative Routing-ID Forwarding */
1208
pci_enable_ari(dev);
1210
/* Single Root I/O Virtualization */
1213
/* Enable ACS P2P upstream forwarding */
1214
pci_enable_acs(dev);
1217
void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1219
device_initialize(&dev->dev);
1220
dev->dev.release = pci_release_dev;
1223
dev->dev.dma_mask = &dev->dma_mask;
1224
dev->dev.dma_parms = &dev->dma_parms;
1225
dev->dev.coherent_dma_mask = 0xffffffffull;
1227
pci_set_dma_max_seg_size(dev, 65536);
1228
pci_set_dma_seg_boundary(dev, 0xffffffff);
1230
/* Fix up broken headers */
1231
pci_fixup_device(pci_fixup_header, dev);
1233
/* Clear the state_saved flag. */
1234
dev->state_saved = false;
1236
/* Initialize various capabilities */
1237
pci_init_capabilities(dev);
1240
* Add the device to our list of discovered devices
1241
* and the bus list for fixup functions, etc.
1243
down_write(&pci_bus_sem);
1244
list_add_tail(&dev->bus_list, &bus->devices);
1245
up_write(&pci_bus_sem);
1248
struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
1250
struct pci_dev *dev;
1252
dev = pci_get_slot(bus, devfn);
1258
dev = pci_scan_device(bus, devfn);
1262
pci_device_add(dev, bus);
1266
EXPORT_SYMBOL(pci_scan_single_device);
1268
static unsigned next_ari_fn(struct pci_dev *dev, unsigned fn)
1271
unsigned pos, next_fn;
1276
pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1279
pci_read_config_word(dev, pos + 4, &cap);
1286
static unsigned next_trad_fn(struct pci_dev *dev, unsigned fn)
1288
return (fn + 1) % 8;
1291
static unsigned no_next_fn(struct pci_dev *dev, unsigned fn)
1296
static int only_one_child(struct pci_bus *bus)
1298
struct pci_dev *parent = bus->self;
1299
if (!parent || !pci_is_pcie(parent))
1301
if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
1302
parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
1308
* pci_scan_slot - scan a PCI slot on a bus for devices.
1309
* @bus: PCI bus to scan
1310
* @devfn: slot number to scan (must have zero function.)
1312
* Scan a PCI slot on the specified PCI bus for devices, adding
1313
* discovered devices to the @bus->devices list. New devices
1314
* will not have is_added set.
1316
* Returns the number of new devices found.
1318
int pci_scan_slot(struct pci_bus *bus, int devfn)
1320
unsigned fn, nr = 0;
1321
struct pci_dev *dev;
1322
unsigned (*next_fn)(struct pci_dev *, unsigned) = no_next_fn;
1324
if (only_one_child(bus) && (devfn > 0))
1325
return 0; /* Already scanned the entire slot */
1327
dev = pci_scan_single_device(bus, devfn);
1333
if (pci_ari_enabled(bus))
1334
next_fn = next_ari_fn;
1335
else if (dev->multifunction)
1336
next_fn = next_trad_fn;
1338
for (fn = next_fn(dev, 0); fn > 0; fn = next_fn(dev, fn)) {
1339
dev = pci_scan_single_device(bus, devfn + fn);
1343
dev->multifunction = 1;
1347
/* only one slot has pcie device */
1348
if (bus->self && nr)
1349
pcie_aspm_init_link_state(bus->self);
1354
unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1356
unsigned int devfn, pass, max = bus->secondary;
1357
struct pci_dev *dev;
1359
dev_dbg(&bus->dev, "scanning bus\n");
1361
/* Go find them, Rover! */
1362
for (devfn = 0; devfn < 0x100; devfn += 8)
1363
pci_scan_slot(bus, devfn);
1365
/* Reserve buses for SR-IOV capability. */
1366
max += pci_iov_bus_range(bus);
1369
* After performing arch-dependent fixup of the bus, look behind
1370
* all PCI-to-PCI bridges on this bus.
1372
if (!bus->is_added) {
1373
dev_dbg(&bus->dev, "fixups for bus\n");
1374
pcibios_fixup_bus(bus);
1375
if (pci_is_root_bus(bus))
1379
for (pass=0; pass < 2; pass++)
1380
list_for_each_entry(dev, &bus->devices, bus_list) {
1381
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1382
dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1383
max = pci_scan_bridge(bus, dev, max, pass);
1387
* We've scanned the bus and so we know all about what's on
1388
* the other side of any bridges that may be on this bus plus
1391
* Return how far we've got finding sub-buses.
1393
dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1397
struct pci_bus * pci_create_bus(struct device *parent,
1398
int bus, struct pci_ops *ops, void *sysdata)
1401
struct pci_bus *b, *b2;
1404
b = pci_alloc_bus();
1408
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1414
b->sysdata = sysdata;
1417
b2 = pci_find_bus(pci_domain_nr(b), bus);
1419
/* If we already got to this bus through a different bridge, ignore it */
1420
dev_dbg(&b2->dev, "bus already known\n");
1424
down_write(&pci_bus_sem);
1425
list_add_tail(&b->node, &pci_root_buses);
1426
up_write(&pci_bus_sem);
1428
dev->parent = parent;
1429
dev->release = pci_release_bus_bridge_dev;
1430
dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
1431
error = device_register(dev);
1434
b->bridge = get_device(dev);
1435
device_enable_async_suspend(b->bridge);
1438
set_dev_node(b->bridge, pcibus_to_node(b));
1440
b->dev.class = &pcibus_class;
1441
b->dev.parent = b->bridge;
1442
dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
1443
error = device_register(&b->dev);
1445
goto class_dev_reg_err;
1446
error = device_create_file(&b->dev, &dev_attr_cpuaffinity);
1448
goto dev_create_file_err;
1450
/* Create legacy_io and legacy_mem files for this bus */
1451
pci_create_legacy_files(b);
1453
b->number = b->secondary = bus;
1454
b->resource[0] = &ioport_resource;
1455
b->resource[1] = &iomem_resource;
1459
dev_create_file_err:
1460
device_unregister(&b->dev);
1462
device_unregister(dev);
1464
down_write(&pci_bus_sem);
1466
up_write(&pci_bus_sem);
1473
struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
1474
int bus, struct pci_ops *ops, void *sysdata)
1478
b = pci_create_bus(parent, bus, ops, sysdata);
1480
b->subordinate = pci_scan_child_bus(b);
1483
EXPORT_SYMBOL(pci_scan_bus_parented);
1485
#ifdef CONFIG_HOTPLUG
1487
* pci_rescan_bus - scan a PCI bus for devices.
1488
* @bus: PCI bus to scan
1490
* Scan a PCI bus and child buses for new devices, adds them,
1493
* Returns the max number of subordinate bus discovered.
1495
unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
1498
struct pci_dev *dev;
1500
max = pci_scan_child_bus(bus);
1502
down_read(&pci_bus_sem);
1503
list_for_each_entry(dev, &bus->devices, bus_list)
1504
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1505
dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1506
if (dev->subordinate)
1507
pci_bus_size_bridges(dev->subordinate);
1508
up_read(&pci_bus_sem);
1510
pci_bus_assign_resources(bus);
1511
pci_enable_bridges(bus);
1512
pci_bus_add_devices(bus);
1516
EXPORT_SYMBOL_GPL(pci_rescan_bus);
1518
EXPORT_SYMBOL(pci_add_new_bus);
1519
EXPORT_SYMBOL(pci_scan_slot);
1520
EXPORT_SYMBOL(pci_scan_bridge);
1521
EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1524
static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
1526
const struct pci_dev *a = to_pci_dev(d_a);
1527
const struct pci_dev *b = to_pci_dev(d_b);
1529
if (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
1530
else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return 1;
1532
if (a->bus->number < b->bus->number) return -1;
1533
else if (a->bus->number > b->bus->number) return 1;
1535
if (a->devfn < b->devfn) return -1;
1536
else if (a->devfn > b->devfn) return 1;
1541
void __init pci_sort_breadthfirst(void)
1543
bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);