PCI: Add support for AGP in cur/max bus speed
[linux-2.6.git] / drivers / pci / probe.c
1 /*
2  * probe.c - PCI detection and setup code
3  */
4
5 #include <linux/kernel.h>
6 #include <linux/delay.h>
7 #include <linux/init.h>
8 #include <linux/pci.h>
9 #include <linux/slab.h>
10 #include <linux/module.h>
11 #include <linux/cpumask.h>
12 #include <linux/pci-aspm.h>
13 #include <acpi/acpi_hest.h>
14 #include "pci.h"
15
16 #define CARDBUS_LATENCY_TIMER   176     /* secondary latency timer */
17 #define CARDBUS_RESERVE_BUSNR   3
18
19 /* Ugh.  Need to stop exporting this to modules. */
20 LIST_HEAD(pci_root_buses);
21 EXPORT_SYMBOL(pci_root_buses);
22
23
24 static int find_anything(struct device *dev, void *data)
25 {
26         return 1;
27 }
28
29 /*
30  * Some device drivers need know if pci is initiated.
31  * Basically, we think pci is not initiated when there
32  * is no device to be found on the pci_bus_type.
33  */
34 int no_pci_devices(void)
35 {
36         struct device *dev;
37         int no_devices;
38
39         dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
40         no_devices = (dev == NULL);
41         put_device(dev);
42         return no_devices;
43 }
44 EXPORT_SYMBOL(no_pci_devices);
45
46 /*
47  * PCI Bus Class Devices
48  */
49 static ssize_t pci_bus_show_cpuaffinity(struct device *dev,
50                                         int type,
51                                         struct device_attribute *attr,
52                                         char *buf)
53 {
54         int ret;
55         const struct cpumask *cpumask;
56
57         cpumask = cpumask_of_pcibus(to_pci_bus(dev));
58         ret = type?
59                 cpulist_scnprintf(buf, PAGE_SIZE-2, cpumask) :
60                 cpumask_scnprintf(buf, PAGE_SIZE-2, cpumask);
61         buf[ret++] = '\n';
62         buf[ret] = '\0';
63         return ret;
64 }
65
66 static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
67                                         struct device_attribute *attr,
68                                         char *buf)
69 {
70         return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
71 }
72
73 static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
74                                         struct device_attribute *attr,
75                                         char *buf)
76 {
77         return pci_bus_show_cpuaffinity(dev, 1, attr, buf);
78 }
79
80 DEVICE_ATTR(cpuaffinity,     S_IRUGO, pci_bus_show_cpumaskaffinity, NULL);
81 DEVICE_ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL);
82
83 /*
84  * PCI Bus Class
85  */
86 static void release_pcibus_dev(struct device *dev)
87 {
88         struct pci_bus *pci_bus = to_pci_bus(dev);
89
90         if (pci_bus->bridge)
91                 put_device(pci_bus->bridge);
92         kfree(pci_bus);
93 }
94
95 static struct class pcibus_class = {
96         .name           = "pci_bus",
97         .dev_release    = &release_pcibus_dev,
98 };
99
100 static int __init pcibus_class_init(void)
101 {
102         return class_register(&pcibus_class);
103 }
104 postcore_initcall(pcibus_class_init);
105
106 /*
107  * Translate the low bits of the PCI base
108  * to the resource type
109  */
110 static inline unsigned int pci_calc_resource_flags(unsigned int flags)
111 {
112         if (flags & PCI_BASE_ADDRESS_SPACE_IO)
113                 return IORESOURCE_IO;
114
115         if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
116                 return IORESOURCE_MEM | IORESOURCE_PREFETCH;
117
118         return IORESOURCE_MEM;
119 }
120
121 static u64 pci_size(u64 base, u64 maxbase, u64 mask)
122 {
123         u64 size = mask & maxbase;      /* Find the significant bits */
124         if (!size)
125                 return 0;
126
127         /* Get the lowest of them to find the decode size, and
128            from that the extent.  */
129         size = (size & ~(size-1)) - 1;
130
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)
134                 return 0;
135
136         return size;
137 }
138
139 static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
140 {
141         if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
142                 res->flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
143                 return pci_bar_io;
144         }
145
146         res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
147
148         if (res->flags & PCI_BASE_ADDRESS_MEM_TYPE_64)
149                 return pci_bar_mem64;
150         return pci_bar_mem32;
151 }
152
153 /**
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
159  *
160  * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
161  */
162 int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
163                         struct resource *res, unsigned int pos)
164 {
165         u32 l, sz, mask;
166
167         mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
168
169         res->name = pci_name(dev);
170
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);
175
176         /*
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
180          * 1 must be clear.
181          */
182         if (!sz || sz == 0xffffffff)
183                 goto fail;
184
185         /*
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.
188          */
189         if (l == 0xffffffff)
190                 l = 0;
191
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;
198                 } else {
199                         l &= PCI_BASE_ADDRESS_MEM_MASK;
200                         mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
201                 }
202         } else {
203                 res->flags |= (l & IORESOURCE_ROM_ENABLE);
204                 l &= PCI_ROM_ADDRESS_MASK;
205                 mask = (u32)PCI_ROM_ADDRESS_MASK;
206         }
207
208         if (type == pci_bar_mem64) {
209                 u64 l64 = l;
210                 u64 sz64 = sz;
211                 u64 mask64 = mask | (u64)~0 << 32;
212
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);
217
218                 l64 |= ((u64)l << 32);
219                 sz64 |= ((u64)sz << 32);
220
221                 sz64 = pci_size(l64, sz64, mask64);
222
223                 if (!sz64)
224                         goto fail;
225
226                 if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
227                         dev_err(&dev->dev, "reg %x: can't handle 64-bit BAR\n",
228                                 pos);
229                         goto fail;
230                 }
231
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);
237                         res->start = 0;
238                         res->end = sz64;
239                 } else {
240                         res->start = l64;
241                         res->end = l64 + sz64;
242                         dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n",
243                                    pos, res);
244                 }
245         } else {
246                 sz = pci_size(l, sz, mask);
247
248                 if (!sz)
249                         goto fail;
250
251                 res->start = l;
252                 res->end = l + sz;
253
254                 dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n", pos, res);
255         }
256
257  out:
258         return (type == pci_bar_mem64) ? 1 : 0;
259  fail:
260         res->flags = 0;
261         goto out;
262 }
263
264 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
265 {
266         unsigned int pos, reg;
267
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);
272         }
273
274         if (rom) {
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);
281         }
282 }
283
284 void __devinit pci_read_bridge_bases(struct pci_bus *child)
285 {
286         struct pci_dev *dev = child->self;
287         u8 io_base_lo, io_limit_lo;
288         u16 mem_base_lo, mem_limit_lo;
289         unsigned long base, limit;
290         struct resource *res;
291         int i;
292
293         if (pci_is_root_bus(child))     /* It's a host bus, nothing to read */
294                 return;
295
296         dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
297                  child->secondary, child->subordinate,
298                  dev->transparent ? " (subtractive decode)": "");
299
300         if (dev->transparent) {
301                 for(i = 3; i < PCI_BUS_NUM_RESOURCES; i++)
302                         child->resource[i] = child->parent->resource[i - 3];
303         }
304
305         res = child->resource[0];
306         pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
307         pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
308         base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
309         limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
310
311         if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
312                 u16 io_base_hi, io_limit_hi;
313                 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
314                 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
315                 base |= (io_base_hi << 16);
316                 limit |= (io_limit_hi << 16);
317         }
318
319         if (base <= limit) {
320                 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
321                 if (!res->start)
322                         res->start = base;
323                 if (!res->end)
324                         res->end = limit + 0xfff;
325                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
326         }
327
328         res = child->resource[1];
329         pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
330         pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
331         base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
332         limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
333         if (base <= limit) {
334                 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
335                 res->start = base;
336                 res->end = limit + 0xfffff;
337                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
338         }
339
340         res = child->resource[2];
341         pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
342         pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
343         base = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
344         limit = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
345
346         if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
347                 u32 mem_base_hi, mem_limit_hi;
348                 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
349                 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
350
351                 /*
352                  * Some bridges set the base > limit by default, and some
353                  * (broken) BIOSes do not initialize them.  If we find
354                  * this, just assume they are not being used.
355                  */
356                 if (mem_base_hi <= mem_limit_hi) {
357 #if BITS_PER_LONG == 64
358                         base |= ((long) mem_base_hi) << 32;
359                         limit |= ((long) mem_limit_hi) << 32;
360 #else
361                         if (mem_base_hi || mem_limit_hi) {
362                                 dev_err(&dev->dev, "can't handle 64-bit "
363                                         "address space for bridge\n");
364                                 return;
365                         }
366 #endif
367                 }
368         }
369         if (base <= limit) {
370                 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
371                                          IORESOURCE_MEM | IORESOURCE_PREFETCH;
372                 if (res->flags & PCI_PREF_RANGE_TYPE_64)
373                         res->flags |= IORESOURCE_MEM_64;
374                 res->start = base;
375                 res->end = limit + 0xfffff;
376                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
377         }
378 }
379
380 static struct pci_bus * pci_alloc_bus(void)
381 {
382         struct pci_bus *b;
383
384         b = kzalloc(sizeof(*b), GFP_KERNEL);
385         if (b) {
386                 INIT_LIST_HEAD(&b->node);
387                 INIT_LIST_HEAD(&b->children);
388                 INIT_LIST_HEAD(&b->devices);
389                 INIT_LIST_HEAD(&b->slots);
390                 b->max_bus_speed = PCI_SPEED_UNKNOWN;
391                 b->cur_bus_speed = PCI_SPEED_UNKNOWN;
392         }
393         return b;
394 }
395
396 static unsigned char pcix_bus_speed[] = {
397         PCI_SPEED_UNKNOWN,              /* 0 */
398         PCI_SPEED_66MHz_PCIX,           /* 1 */
399         PCI_SPEED_100MHz_PCIX,          /* 2 */
400         PCI_SPEED_133MHz_PCIX,          /* 3 */
401         PCI_SPEED_UNKNOWN,              /* 4 */
402         PCI_SPEED_66MHz_PCIX_ECC,       /* 5 */
403         PCI_SPEED_100MHz_PCIX_ECC,      /* 6 */
404         PCI_SPEED_133MHz_PCIX_ECC,      /* 7 */
405         PCI_SPEED_UNKNOWN,              /* 8 */
406         PCI_SPEED_66MHz_PCIX_266,       /* 9 */
407         PCI_SPEED_100MHz_PCIX_266,      /* A */
408         PCI_SPEED_133MHz_PCIX_266,      /* B */
409         PCI_SPEED_UNKNOWN,              /* C */
410         PCI_SPEED_66MHz_PCIX_533,       /* D */
411         PCI_SPEED_100MHz_PCIX_533,      /* E */
412         PCI_SPEED_133MHz_PCIX_533       /* F */
413 };
414
415 static unsigned char pcie_link_speed[] = {
416         PCI_SPEED_UNKNOWN,              /* 0 */
417         PCIE_SPEED_2_5GT,               /* 1 */
418         PCIE_SPEED_5_0GT,               /* 2 */
419         PCI_SPEED_UNKNOWN,              /* 3 */
420         PCI_SPEED_UNKNOWN,              /* 4 */
421         PCI_SPEED_UNKNOWN,              /* 5 */
422         PCI_SPEED_UNKNOWN,              /* 6 */
423         PCI_SPEED_UNKNOWN,              /* 7 */
424         PCI_SPEED_UNKNOWN,              /* 8 */
425         PCI_SPEED_UNKNOWN,              /* 9 */
426         PCI_SPEED_UNKNOWN,              /* A */
427         PCI_SPEED_UNKNOWN,              /* B */
428         PCI_SPEED_UNKNOWN,              /* C */
429         PCI_SPEED_UNKNOWN,              /* D */
430         PCI_SPEED_UNKNOWN,              /* E */
431         PCI_SPEED_UNKNOWN               /* F */
432 };
433
434 void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
435 {
436         bus->cur_bus_speed = pcie_link_speed[linksta & 0xf];
437 }
438 EXPORT_SYMBOL_GPL(pcie_update_link_speed);
439
440 static unsigned char agp_speeds[] = {
441         AGP_UNKNOWN,
442         AGP_1X,
443         AGP_2X,
444         AGP_4X,
445         AGP_8X
446 };
447
448 static enum pci_bus_speed agp_speed(int agp3, int agpstat)
449 {
450         int index = 0;
451
452         if (agpstat & 4)
453                 index = 3;
454         else if (agpstat & 2)
455                 index = 2;
456         else if (agpstat & 1)
457                 index = 1;
458         else
459                 goto out;
460         
461         if (agp3) {
462                 index += 2;
463                 if (index == 5)
464                         index = 0;
465         }
466
467  out:
468         return agp_speeds[index];
469 }
470
471
472 static void pci_set_bus_speed(struct pci_bus *bus)
473 {
474         struct pci_dev *bridge = bus->self;
475         int pos;
476
477         pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
478         if (!pos)
479                 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
480         if (pos) {
481                 u32 agpstat, agpcmd;
482
483                 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
484                 bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
485
486                 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
487                 bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
488         }
489
490         pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
491         if (pos) {
492                 u16 status;
493                 enum pci_bus_speed max;
494                 pci_read_config_word(bridge, pos + 2, &status);
495
496                 if (status & 0x8000) {
497                         max = PCI_SPEED_133MHz_PCIX_533;
498                 } else if (status & 0x4000) {
499                         max = PCI_SPEED_133MHz_PCIX_266;
500                 } else if (status & 0x0002) {
501                         if (((status >> 12) & 0x3) == 2) {
502                                 max = PCI_SPEED_133MHz_PCIX_ECC;
503                         } else {
504                                 max = PCI_SPEED_133MHz_PCIX;
505                         }
506                 } else {
507                         max = PCI_SPEED_66MHz_PCIX;
508                 }
509
510                 bus->max_bus_speed = max;
511                 bus->cur_bus_speed = pcix_bus_speed[(status >> 6) & 0xf];
512
513                 return;
514         }
515
516         pos = pci_find_capability(bridge, PCI_CAP_ID_EXP);
517         if (pos) {
518                 u32 linkcap;
519                 u16 linksta;
520
521                 pci_read_config_dword(bridge, pos + PCI_EXP_LNKCAP, &linkcap);
522                 bus->max_bus_speed = pcie_link_speed[linkcap & 0xf];
523
524                 pci_read_config_word(bridge, pos + PCI_EXP_LNKSTA, &linksta);
525                 pcie_update_link_speed(bus, linksta);
526         }
527 }
528
529
530 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
531                                            struct pci_dev *bridge, int busnr)
532 {
533         struct pci_bus *child;
534         int i;
535
536         /*
537          * Allocate a new bus, and inherit stuff from the parent..
538          */
539         child = pci_alloc_bus();
540         if (!child)
541                 return NULL;
542
543         child->parent = parent;
544         child->ops = parent->ops;
545         child->sysdata = parent->sysdata;
546         child->bus_flags = parent->bus_flags;
547
548         /* initialize some portions of the bus device, but don't register it
549          * now as the parent is not properly set up yet.  This device will get
550          * registered later in pci_bus_add_devices()
551          */
552         child->dev.class = &pcibus_class;
553         dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
554
555         /*
556          * Set up the primary, secondary and subordinate
557          * bus numbers.
558          */
559         child->number = child->secondary = busnr;
560         child->primary = parent->secondary;
561         child->subordinate = 0xff;
562
563         if (!bridge)
564                 return child;
565
566         child->self = bridge;
567         child->bridge = get_device(&bridge->dev);
568
569         pci_set_bus_speed(child);
570
571         /* Set up default resource pointers and names.. */
572         for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
573                 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
574                 child->resource[i]->name = child->name;
575         }
576         bridge->subordinate = child;
577
578         return child;
579 }
580
581 struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
582 {
583         struct pci_bus *child;
584
585         child = pci_alloc_child_bus(parent, dev, busnr);
586         if (child) {
587                 down_write(&pci_bus_sem);
588                 list_add_tail(&child->node, &parent->children);
589                 up_write(&pci_bus_sem);
590         }
591         return child;
592 }
593
594 static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
595 {
596         struct pci_bus *parent = child->parent;
597
598         /* Attempts to fix that up are really dangerous unless
599            we're going to re-assign all bus numbers. */
600         if (!pcibios_assign_all_busses())
601                 return;
602
603         while (parent->parent && parent->subordinate < max) {
604                 parent->subordinate = max;
605                 pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
606                 parent = parent->parent;
607         }
608 }
609
610 /*
611  * If it's a bridge, configure it and scan the bus behind it.
612  * For CardBus bridges, we don't scan behind as the devices will
613  * be handled by the bridge driver itself.
614  *
615  * We need to process bridges in two passes -- first we scan those
616  * already configured by the BIOS and after we are done with all of
617  * them, we proceed to assigning numbers to the remaining buses in
618  * order to avoid overlaps between old and new bus numbers.
619  */
620 int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
621 {
622         struct pci_bus *child;
623         int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
624         u32 buses, i, j = 0;
625         u16 bctl;
626         int broken = 0;
627
628         pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
629
630         dev_dbg(&dev->dev, "scanning behind bridge, config %06x, pass %d\n",
631                 buses & 0xffffff, pass);
632
633         /* Check if setup is sensible at all */
634         if (!pass &&
635             ((buses & 0xff) != bus->number || ((buses >> 8) & 0xff) <= bus->number)) {
636                 dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n");
637                 broken = 1;
638         }
639
640         /* Disable MasterAbortMode during probing to avoid reporting
641            of bus errors (in some architectures) */ 
642         pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
643         pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
644                               bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
645
646         if ((buses & 0xffff00) && !pcibios_assign_all_busses() && !is_cardbus && !broken) {
647                 unsigned int cmax, busnr;
648                 /*
649                  * Bus already configured by firmware, process it in the first
650                  * pass and just note the configuration.
651                  */
652                 if (pass)
653                         goto out;
654                 busnr = (buses >> 8) & 0xFF;
655
656                 /*
657                  * If we already got to this bus through a different bridge,
658                  * don't re-add it. This can happen with the i450NX chipset.
659                  *
660                  * However, we continue to descend down the hierarchy and
661                  * scan remaining child buses.
662                  */
663                 child = pci_find_bus(pci_domain_nr(bus), busnr);
664                 if (!child) {
665                         child = pci_add_new_bus(bus, dev, busnr);
666                         if (!child)
667                                 goto out;
668                         child->primary = buses & 0xFF;
669                         child->subordinate = (buses >> 16) & 0xFF;
670                         child->bridge_ctl = bctl;
671                 }
672
673                 cmax = pci_scan_child_bus(child);
674                 if (cmax > max)
675                         max = cmax;
676                 if (child->subordinate > max)
677                         max = child->subordinate;
678         } else {
679                 /*
680                  * We need to assign a number to this bus which we always
681                  * do in the second pass.
682                  */
683                 if (!pass) {
684                         if (pcibios_assign_all_busses() || broken)
685                                 /* Temporarily disable forwarding of the
686                                    configuration cycles on all bridges in
687                                    this bus segment to avoid possible
688                                    conflicts in the second pass between two
689                                    bridges programmed with overlapping
690                                    bus ranges. */
691                                 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
692                                                        buses & ~0xffffff);
693                         goto out;
694                 }
695
696                 /* Clear errors */
697                 pci_write_config_word(dev, PCI_STATUS, 0xffff);
698
699                 /* Prevent assigning a bus number that already exists.
700                  * This can happen when a bridge is hot-plugged */
701                 if (pci_find_bus(pci_domain_nr(bus), max+1))
702                         goto out;
703                 child = pci_add_new_bus(bus, dev, ++max);
704                 buses = (buses & 0xff000000)
705                       | ((unsigned int)(child->primary)     <<  0)
706                       | ((unsigned int)(child->secondary)   <<  8)
707                       | ((unsigned int)(child->subordinate) << 16);
708
709                 /*
710                  * yenta.c forces a secondary latency timer of 176.
711                  * Copy that behaviour here.
712                  */
713                 if (is_cardbus) {
714                         buses &= ~0xff000000;
715                         buses |= CARDBUS_LATENCY_TIMER << 24;
716                 }
717                         
718                 /*
719                  * We need to blast all three values with a single write.
720                  */
721                 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
722
723                 if (!is_cardbus) {
724                         child->bridge_ctl = bctl;
725                         /*
726                          * Adjust subordinate busnr in parent buses.
727                          * We do this before scanning for children because
728                          * some devices may not be detected if the bios
729                          * was lazy.
730                          */
731                         pci_fixup_parent_subordinate_busnr(child, max);
732                         /* Now we can scan all subordinate buses... */
733                         max = pci_scan_child_bus(child);
734                         /*
735                          * now fix it up again since we have found
736                          * the real value of max.
737                          */
738                         pci_fixup_parent_subordinate_busnr(child, max);
739                 } else {
740                         /*
741                          * For CardBus bridges, we leave 4 bus numbers
742                          * as cards with a PCI-to-PCI bridge can be
743                          * inserted later.
744                          */
745                         for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
746                                 struct pci_bus *parent = bus;
747                                 if (pci_find_bus(pci_domain_nr(bus),
748                                                         max+i+1))
749                                         break;
750                                 while (parent->parent) {
751                                         if ((!pcibios_assign_all_busses()) &&
752                                             (parent->subordinate > max) &&
753                                             (parent->subordinate <= max+i)) {
754                                                 j = 1;
755                                         }
756                                         parent = parent->parent;
757                                 }
758                                 if (j) {
759                                         /*
760                                          * Often, there are two cardbus bridges
761                                          * -- try to leave one valid bus number
762                                          * for each one.
763                                          */
764                                         i /= 2;
765                                         break;
766                                 }
767                         }
768                         max += i;
769                         pci_fixup_parent_subordinate_busnr(child, max);
770                 }
771                 /*
772                  * Set the subordinate bus number to its real value.
773                  */
774                 child->subordinate = max;
775                 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
776         }
777
778         sprintf(child->name,
779                 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
780                 pci_domain_nr(bus), child->number);
781
782         /* Has only triggered on CardBus, fixup is in yenta_socket */
783         while (bus->parent) {
784                 if ((child->subordinate > bus->subordinate) ||
785                     (child->number > bus->subordinate) ||
786                     (child->number < bus->number) ||
787                     (child->subordinate < bus->number)) {
788                         dev_info(&child->dev, "[bus %02x-%02x] %s "
789                                 "hidden behind%s bridge %s [bus %02x-%02x]\n",
790                                 child->number, child->subordinate,
791                                 (bus->number > child->subordinate &&
792                                  bus->subordinate < child->number) ?
793                                         "wholly" : "partially",
794                                 bus->self->transparent ? " transparent" : "",
795                                 dev_name(&bus->dev),
796                                 bus->number, bus->subordinate);
797                 }
798                 bus = bus->parent;
799         }
800
801 out:
802         pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
803
804         return max;
805 }
806
807 /*
808  * Read interrupt line and base address registers.
809  * The architecture-dependent code can tweak these, of course.
810  */
811 static void pci_read_irq(struct pci_dev *dev)
812 {
813         unsigned char irq;
814
815         pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
816         dev->pin = irq;
817         if (irq)
818                 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
819         dev->irq = irq;
820 }
821
822 void set_pcie_port_type(struct pci_dev *pdev)
823 {
824         int pos;
825         u16 reg16;
826
827         pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
828         if (!pos)
829                 return;
830         pdev->is_pcie = 1;
831         pdev->pcie_cap = pos;
832         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
833         pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
834 }
835
836 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
837 {
838         int pos;
839         u16 reg16;
840         u32 reg32;
841
842         pos = pci_pcie_cap(pdev);
843         if (!pos)
844                 return;
845         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
846         if (!(reg16 & PCI_EXP_FLAGS_SLOT))
847                 return;
848         pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, &reg32);
849         if (reg32 & PCI_EXP_SLTCAP_HPC)
850                 pdev->is_hotplug_bridge = 1;
851 }
852
853 static void set_pci_aer_firmware_first(struct pci_dev *pdev)
854 {
855         if (acpi_hest_firmware_first_pci(pdev))
856                 pdev->aer_firmware_first = 1;
857 }
858
859 #define LEGACY_IO_RESOURCE      (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
860
861 /**
862  * pci_setup_device - fill in class and map information of a device
863  * @dev: the device structure to fill
864  *
865  * Initialize the device structure with information about the device's 
866  * vendor,class,memory and IO-space addresses,IRQ lines etc.
867  * Called at initialisation of the PCI subsystem and by CardBus services.
868  * Returns 0 on success and negative if unknown type of device (not normal,
869  * bridge or CardBus).
870  */
871 int pci_setup_device(struct pci_dev *dev)
872 {
873         u32 class;
874         u8 hdr_type;
875         struct pci_slot *slot;
876         int pos = 0;
877
878         if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
879                 return -EIO;
880
881         dev->sysdata = dev->bus->sysdata;
882         dev->dev.parent = dev->bus->bridge;
883         dev->dev.bus = &pci_bus_type;
884         dev->hdr_type = hdr_type & 0x7f;
885         dev->multifunction = !!(hdr_type & 0x80);
886         dev->error_state = pci_channel_io_normal;
887         set_pcie_port_type(dev);
888         set_pci_aer_firmware_first(dev);
889
890         list_for_each_entry(slot, &dev->bus->slots, list)
891                 if (PCI_SLOT(dev->devfn) == slot->number)
892                         dev->slot = slot;
893
894         /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
895            set this higher, assuming the system even supports it.  */
896         dev->dma_mask = 0xffffffff;
897
898         dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
899                      dev->bus->number, PCI_SLOT(dev->devfn),
900                      PCI_FUNC(dev->devfn));
901
902         pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
903         dev->revision = class & 0xff;
904         class >>= 8;                                /* upper 3 bytes */
905         dev->class = class;
906         class >>= 8;
907
908         dev_dbg(&dev->dev, "found [%04x:%04x] class %06x header type %02x\n",
909                  dev->vendor, dev->device, class, dev->hdr_type);
910
911         /* need to have dev->class ready */
912         dev->cfg_size = pci_cfg_space_size(dev);
913
914         /* "Unknown power state" */
915         dev->current_state = PCI_UNKNOWN;
916
917         /* Early fixups, before probing the BARs */
918         pci_fixup_device(pci_fixup_early, dev);
919         /* device class may be changed after fixup */
920         class = dev->class >> 8;
921
922         switch (dev->hdr_type) {                    /* header type */
923         case PCI_HEADER_TYPE_NORMAL:                /* standard header */
924                 if (class == PCI_CLASS_BRIDGE_PCI)
925                         goto bad;
926                 pci_read_irq(dev);
927                 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
928                 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
929                 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
930
931                 /*
932                  *      Do the ugly legacy mode stuff here rather than broken chip
933                  *      quirk code. Legacy mode ATA controllers have fixed
934                  *      addresses. These are not always echoed in BAR0-3, and
935                  *      BAR0-3 in a few cases contain junk!
936                  */
937                 if (class == PCI_CLASS_STORAGE_IDE) {
938                         u8 progif;
939                         pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
940                         if ((progif & 1) == 0) {
941                                 dev->resource[0].start = 0x1F0;
942                                 dev->resource[0].end = 0x1F7;
943                                 dev->resource[0].flags = LEGACY_IO_RESOURCE;
944                                 dev->resource[1].start = 0x3F6;
945                                 dev->resource[1].end = 0x3F6;
946                                 dev->resource[1].flags = LEGACY_IO_RESOURCE;
947                         }
948                         if ((progif & 4) == 0) {
949                                 dev->resource[2].start = 0x170;
950                                 dev->resource[2].end = 0x177;
951                                 dev->resource[2].flags = LEGACY_IO_RESOURCE;
952                                 dev->resource[3].start = 0x376;
953                                 dev->resource[3].end = 0x376;
954                                 dev->resource[3].flags = LEGACY_IO_RESOURCE;
955                         }
956                 }
957                 break;
958
959         case PCI_HEADER_TYPE_BRIDGE:                /* bridge header */
960                 if (class != PCI_CLASS_BRIDGE_PCI)
961                         goto bad;
962                 /* The PCI-to-PCI bridge spec requires that subtractive
963                    decoding (i.e. transparent) bridge must have programming
964                    interface code of 0x01. */ 
965                 pci_read_irq(dev);
966                 dev->transparent = ((dev->class & 0xff) == 1);
967                 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
968                 set_pcie_hotplug_bridge(dev);
969                 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
970                 if (pos) {
971                         pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
972                         pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
973                 }
974                 break;
975
976         case PCI_HEADER_TYPE_CARDBUS:               /* CardBus bridge header */
977                 if (class != PCI_CLASS_BRIDGE_CARDBUS)
978                         goto bad;
979                 pci_read_irq(dev);
980                 pci_read_bases(dev, 1, 0);
981                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
982                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
983                 break;
984
985         default:                                    /* unknown header */
986                 dev_err(&dev->dev, "unknown header type %02x, "
987                         "ignoring device\n", dev->hdr_type);
988                 return -EIO;
989
990         bad:
991                 dev_err(&dev->dev, "ignoring class %02x (doesn't match header "
992                         "type %02x)\n", class, dev->hdr_type);
993                 dev->class = PCI_CLASS_NOT_DEFINED;
994         }
995
996         /* We found a fine healthy device, go go go... */
997         return 0;
998 }
999
1000 static void pci_release_capabilities(struct pci_dev *dev)
1001 {
1002         pci_vpd_release(dev);
1003         pci_iov_release(dev);
1004 }
1005
1006 /**
1007  * pci_release_dev - free a pci device structure when all users of it are finished.
1008  * @dev: device that's been disconnected
1009  *
1010  * Will be called only by the device core when all users of this pci device are
1011  * done.
1012  */
1013 static void pci_release_dev(struct device *dev)
1014 {
1015         struct pci_dev *pci_dev;
1016
1017         pci_dev = to_pci_dev(dev);
1018         pci_release_capabilities(pci_dev);
1019         kfree(pci_dev);
1020 }
1021
1022 /**
1023  * pci_cfg_space_size - get the configuration space size of the PCI device.
1024  * @dev: PCI device
1025  *
1026  * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1027  * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
1028  * access it.  Maybe we don't have a way to generate extended config space
1029  * accesses, or the device is behind a reverse Express bridge.  So we try
1030  * reading the dword at 0x100 which must either be 0 or a valid extended
1031  * capability header.
1032  */
1033 int pci_cfg_space_size_ext(struct pci_dev *dev)
1034 {
1035         u32 status;
1036         int pos = PCI_CFG_SPACE_SIZE;
1037
1038         if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1039                 goto fail;
1040         if (status == 0xffffffff)
1041                 goto fail;
1042
1043         return PCI_CFG_SPACE_EXP_SIZE;
1044
1045  fail:
1046         return PCI_CFG_SPACE_SIZE;
1047 }
1048
1049 int pci_cfg_space_size(struct pci_dev *dev)
1050 {
1051         int pos;
1052         u32 status;
1053         u16 class;
1054
1055         class = dev->class >> 8;
1056         if (class == PCI_CLASS_BRIDGE_HOST)
1057                 return pci_cfg_space_size_ext(dev);
1058
1059         pos = pci_pcie_cap(dev);
1060         if (!pos) {
1061                 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1062                 if (!pos)
1063                         goto fail;
1064
1065                 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1066                 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1067                         goto fail;
1068         }
1069
1070         return pci_cfg_space_size_ext(dev);
1071
1072  fail:
1073         return PCI_CFG_SPACE_SIZE;
1074 }
1075
1076 static void pci_release_bus_bridge_dev(struct device *dev)
1077 {
1078         kfree(dev);
1079 }
1080
1081 struct pci_dev *alloc_pci_dev(void)
1082 {
1083         struct pci_dev *dev;
1084
1085         dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1086         if (!dev)
1087                 return NULL;
1088
1089         INIT_LIST_HEAD(&dev->bus_list);
1090
1091         return dev;
1092 }
1093 EXPORT_SYMBOL(alloc_pci_dev);
1094
1095 /*
1096  * Read the config data for a PCI device, sanity-check it
1097  * and fill in the dev structure...
1098  */
1099 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1100 {
1101         struct pci_dev *dev;
1102         u32 l;
1103         int delay = 1;
1104
1105         if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1106                 return NULL;
1107
1108         /* some broken boards return 0 or ~0 if a slot is empty: */
1109         if (l == 0xffffffff || l == 0x00000000 ||
1110             l == 0x0000ffff || l == 0xffff0000)
1111                 return NULL;
1112
1113         /* Configuration request Retry Status */
1114         while (l == 0xffff0001) {
1115                 msleep(delay);
1116                 delay *= 2;
1117                 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1118                         return NULL;
1119                 /* Card hasn't responded in 60 seconds?  Must be stuck. */
1120                 if (delay > 60 * 1000) {
1121                         printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
1122                                         "responding\n", pci_domain_nr(bus),
1123                                         bus->number, PCI_SLOT(devfn),
1124                                         PCI_FUNC(devfn));
1125                         return NULL;
1126                 }
1127         }
1128
1129         dev = alloc_pci_dev();
1130         if (!dev)
1131                 return NULL;
1132
1133         dev->bus = bus;
1134         dev->devfn = devfn;
1135         dev->vendor = l & 0xffff;
1136         dev->device = (l >> 16) & 0xffff;
1137
1138         if (pci_setup_device(dev)) {
1139                 kfree(dev);
1140                 return NULL;
1141         }
1142
1143         return dev;
1144 }
1145
1146 static void pci_init_capabilities(struct pci_dev *dev)
1147 {
1148         /* MSI/MSI-X list */
1149         pci_msi_init_pci_dev(dev);
1150
1151         /* Buffers for saving PCIe and PCI-X capabilities */
1152         pci_allocate_cap_save_buffers(dev);
1153
1154         /* Power Management */
1155         pci_pm_init(dev);
1156         platform_pci_wakeup_init(dev);
1157
1158         /* Vital Product Data */
1159         pci_vpd_pci22_init(dev);
1160
1161         /* Alternative Routing-ID Forwarding */
1162         pci_enable_ari(dev);
1163
1164         /* Single Root I/O Virtualization */
1165         pci_iov_init(dev);
1166
1167         /* Enable ACS P2P upstream forwarding */
1168         pci_enable_acs(dev);
1169 }
1170
1171 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1172 {
1173         device_initialize(&dev->dev);
1174         dev->dev.release = pci_release_dev;
1175         pci_dev_get(dev);
1176
1177         dev->dev.dma_mask = &dev->dma_mask;
1178         dev->dev.dma_parms = &dev->dma_parms;
1179         dev->dev.coherent_dma_mask = 0xffffffffull;
1180
1181         pci_set_dma_max_seg_size(dev, 65536);
1182         pci_set_dma_seg_boundary(dev, 0xffffffff);
1183
1184         /* Fix up broken headers */
1185         pci_fixup_device(pci_fixup_header, dev);
1186
1187         /* Clear the state_saved flag. */
1188         dev->state_saved = false;
1189
1190         /* Initialize various capabilities */
1191         pci_init_capabilities(dev);
1192
1193         /*
1194          * Add the device to our list of discovered devices
1195          * and the bus list for fixup functions, etc.
1196          */
1197         down_write(&pci_bus_sem);
1198         list_add_tail(&dev->bus_list, &bus->devices);
1199         up_write(&pci_bus_sem);
1200 }
1201
1202 struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
1203 {
1204         struct pci_dev *dev;
1205
1206         dev = pci_get_slot(bus, devfn);
1207         if (dev) {
1208                 pci_dev_put(dev);
1209                 return dev;
1210         }
1211
1212         dev = pci_scan_device(bus, devfn);
1213         if (!dev)
1214                 return NULL;
1215
1216         pci_device_add(dev, bus);
1217
1218         return dev;
1219 }
1220 EXPORT_SYMBOL(pci_scan_single_device);
1221
1222 static unsigned next_ari_fn(struct pci_dev *dev, unsigned fn)
1223 {
1224         u16 cap;
1225         unsigned pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1226         if (!pos)
1227                 return 0;
1228         pci_read_config_word(dev, pos + 4, &cap);
1229         return cap >> 8;
1230 }
1231
1232 static unsigned next_trad_fn(struct pci_dev *dev, unsigned fn)
1233 {
1234         return (fn + 1) % 8;
1235 }
1236
1237 static unsigned no_next_fn(struct pci_dev *dev, unsigned fn)
1238 {
1239         return 0;
1240 }
1241
1242 static int only_one_child(struct pci_bus *bus)
1243 {
1244         struct pci_dev *parent = bus->self;
1245         if (!parent || !pci_is_pcie(parent))
1246                 return 0;
1247         if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
1248             parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
1249                 return 1;
1250         return 0;
1251 }
1252
1253 /**
1254  * pci_scan_slot - scan a PCI slot on a bus for devices.
1255  * @bus: PCI bus to scan
1256  * @devfn: slot number to scan (must have zero function.)
1257  *
1258  * Scan a PCI slot on the specified PCI bus for devices, adding
1259  * discovered devices to the @bus->devices list.  New devices
1260  * will not have is_added set.
1261  *
1262  * Returns the number of new devices found.
1263  */
1264 int pci_scan_slot(struct pci_bus *bus, int devfn)
1265 {
1266         unsigned fn, nr = 0;
1267         struct pci_dev *dev;
1268         unsigned (*next_fn)(struct pci_dev *, unsigned) = no_next_fn;
1269
1270         if (only_one_child(bus) && (devfn > 0))
1271                 return 0; /* Already scanned the entire slot */
1272
1273         dev = pci_scan_single_device(bus, devfn);
1274         if (dev && !dev->is_added)      /* new device? */
1275                 nr++;
1276
1277         if (pci_ari_enabled(bus))
1278                 next_fn = next_ari_fn;
1279         else if (dev && dev->multifunction)
1280                 next_fn = next_trad_fn;
1281
1282         for (fn = next_fn(dev, 0); fn > 0; fn = next_fn(dev, fn)) {
1283                 dev = pci_scan_single_device(bus, devfn + fn);
1284                 if (dev) {
1285                         if (!dev->is_added)
1286                                 nr++;
1287                         dev->multifunction = 1;
1288                 }
1289         }
1290
1291         /* only one slot has pcie device */
1292         if (bus->self && nr)
1293                 pcie_aspm_init_link_state(bus->self);
1294
1295         return nr;
1296 }
1297
1298 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1299 {
1300         unsigned int devfn, pass, max = bus->secondary;
1301         struct pci_dev *dev;
1302
1303         dev_dbg(&bus->dev, "scanning bus\n");
1304
1305         /* Go find them, Rover! */
1306         for (devfn = 0; devfn < 0x100; devfn += 8)
1307                 pci_scan_slot(bus, devfn);
1308
1309         /* Reserve buses for SR-IOV capability. */
1310         max += pci_iov_bus_range(bus);
1311
1312         /*
1313          * After performing arch-dependent fixup of the bus, look behind
1314          * all PCI-to-PCI bridges on this bus.
1315          */
1316         if (!bus->is_added) {
1317                 dev_dbg(&bus->dev, "fixups for bus\n");
1318                 pcibios_fixup_bus(bus);
1319                 if (pci_is_root_bus(bus))
1320                         bus->is_added = 1;
1321         }
1322
1323         for (pass=0; pass < 2; pass++)
1324                 list_for_each_entry(dev, &bus->devices, bus_list) {
1325                         if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1326                             dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1327                                 max = pci_scan_bridge(bus, dev, max, pass);
1328                 }
1329
1330         /*
1331          * We've scanned the bus and so we know all about what's on
1332          * the other side of any bridges that may be on this bus plus
1333          * any devices.
1334          *
1335          * Return how far we've got finding sub-buses.
1336          */
1337         dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1338         return max;
1339 }
1340
1341 struct pci_bus * pci_create_bus(struct device *parent,
1342                 int bus, struct pci_ops *ops, void *sysdata)
1343 {
1344         int error;
1345         struct pci_bus *b, *b2;
1346         struct device *dev;
1347
1348         b = pci_alloc_bus();
1349         if (!b)
1350                 return NULL;
1351
1352         dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1353         if (!dev){
1354                 kfree(b);
1355                 return NULL;
1356         }
1357
1358         b->sysdata = sysdata;
1359         b->ops = ops;
1360
1361         b2 = pci_find_bus(pci_domain_nr(b), bus);
1362         if (b2) {
1363                 /* If we already got to this bus through a different bridge, ignore it */
1364                 dev_dbg(&b2->dev, "bus already known\n");
1365                 goto err_out;
1366         }
1367
1368         down_write(&pci_bus_sem);
1369         list_add_tail(&b->node, &pci_root_buses);
1370         up_write(&pci_bus_sem);
1371
1372         dev->parent = parent;
1373         dev->release = pci_release_bus_bridge_dev;
1374         dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
1375         error = device_register(dev);
1376         if (error)
1377                 goto dev_reg_err;
1378         b->bridge = get_device(dev);
1379
1380         if (!parent)
1381                 set_dev_node(b->bridge, pcibus_to_node(b));
1382
1383         b->dev.class = &pcibus_class;
1384         b->dev.parent = b->bridge;
1385         dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
1386         error = device_register(&b->dev);
1387         if (error)
1388                 goto class_dev_reg_err;
1389         error = device_create_file(&b->dev, &dev_attr_cpuaffinity);
1390         if (error)
1391                 goto dev_create_file_err;
1392
1393         /* Create legacy_io and legacy_mem files for this bus */
1394         pci_create_legacy_files(b);
1395
1396         b->number = b->secondary = bus;
1397         b->resource[0] = &ioport_resource;
1398         b->resource[1] = &iomem_resource;
1399
1400         return b;
1401
1402 dev_create_file_err:
1403         device_unregister(&b->dev);
1404 class_dev_reg_err:
1405         device_unregister(dev);
1406 dev_reg_err:
1407         down_write(&pci_bus_sem);
1408         list_del(&b->node);
1409         up_write(&pci_bus_sem);
1410 err_out:
1411         kfree(dev);
1412         kfree(b);
1413         return NULL;
1414 }
1415
1416 struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
1417                 int bus, struct pci_ops *ops, void *sysdata)
1418 {
1419         struct pci_bus *b;
1420
1421         b = pci_create_bus(parent, bus, ops, sysdata);
1422         if (b)
1423                 b->subordinate = pci_scan_child_bus(b);
1424         return b;
1425 }
1426 EXPORT_SYMBOL(pci_scan_bus_parented);
1427
1428 #ifdef CONFIG_HOTPLUG
1429 /**
1430  * pci_rescan_bus - scan a PCI bus for devices.
1431  * @bus: PCI bus to scan
1432  *
1433  * Scan a PCI bus and child buses for new devices, adds them,
1434  * and enables them.
1435  *
1436  * Returns the max number of subordinate bus discovered.
1437  */
1438 unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
1439 {
1440         unsigned int max;
1441         struct pci_dev *dev;
1442
1443         max = pci_scan_child_bus(bus);
1444
1445         down_read(&pci_bus_sem);
1446         list_for_each_entry(dev, &bus->devices, bus_list)
1447                 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1448                     dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1449                         if (dev->subordinate)
1450                                 pci_bus_size_bridges(dev->subordinate);
1451         up_read(&pci_bus_sem);
1452
1453         pci_bus_assign_resources(bus);
1454         pci_enable_bridges(bus);
1455         pci_bus_add_devices(bus);
1456
1457         return max;
1458 }
1459 EXPORT_SYMBOL_GPL(pci_rescan_bus);
1460
1461 EXPORT_SYMBOL(pci_add_new_bus);
1462 EXPORT_SYMBOL(pci_scan_slot);
1463 EXPORT_SYMBOL(pci_scan_bridge);
1464 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1465 #endif
1466
1467 static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
1468 {
1469         const struct pci_dev *a = to_pci_dev(d_a);
1470         const struct pci_dev *b = to_pci_dev(d_b);
1471
1472         if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
1473         else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
1474
1475         if      (a->bus->number < b->bus->number) return -1;
1476         else if (a->bus->number > b->bus->number) return  1;
1477
1478         if      (a->devfn < b->devfn) return -1;
1479         else if (a->devfn > b->devfn) return  1;
1480
1481         return 0;
1482 }
1483
1484 void __init pci_sort_breadthfirst(void)
1485 {
1486         bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
1487 }