Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt...
[pandora-kernel.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 "pci.h"
14
15 #define CARDBUS_LATENCY_TIMER   176     /* secondary latency timer */
16 #define CARDBUS_RESERVE_BUSNR   3
17
18 /* Ugh.  Need to stop exporting this to modules. */
19 LIST_HEAD(pci_root_buses);
20 EXPORT_SYMBOL(pci_root_buses);
21
22
23 static int find_anything(struct device *dev, void *data)
24 {
25         return 1;
26 }
27
28 /*
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.
32  */
33 int no_pci_devices(void)
34 {
35         struct device *dev;
36         int no_devices;
37
38         dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
39         no_devices = (dev == NULL);
40         put_device(dev);
41         return no_devices;
42 }
43 EXPORT_SYMBOL(no_pci_devices);
44
45 /*
46  * PCI Bus Class Devices
47  */
48 static ssize_t pci_bus_show_cpuaffinity(struct device *dev,
49                                         int type,
50                                         struct device_attribute *attr,
51                                         char *buf)
52 {
53         int ret;
54         const struct cpumask *cpumask;
55
56         cpumask = cpumask_of_pcibus(to_pci_bus(dev));
57         ret = type?
58                 cpulist_scnprintf(buf, PAGE_SIZE-2, cpumask) :
59                 cpumask_scnprintf(buf, PAGE_SIZE-2, cpumask);
60         buf[ret++] = '\n';
61         buf[ret] = '\0';
62         return ret;
63 }
64
65 static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
66                                         struct device_attribute *attr,
67                                         char *buf)
68 {
69         return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
70 }
71
72 static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
73                                         struct device_attribute *attr,
74                                         char *buf)
75 {
76         return pci_bus_show_cpuaffinity(dev, 1, attr, buf);
77 }
78
79 DEVICE_ATTR(cpuaffinity,     S_IRUGO, pci_bus_show_cpumaskaffinity, NULL);
80 DEVICE_ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL);
81
82 /*
83  * PCI Bus Class
84  */
85 static void release_pcibus_dev(struct device *dev)
86 {
87         struct pci_bus *pci_bus = to_pci_bus(dev);
88
89         if (pci_bus->bridge)
90                 put_device(pci_bus->bridge);
91         pci_bus_remove_resources(pci_bus);
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 static void __devinit pci_read_bridge_io(struct pci_bus *child)
285 {
286         struct pci_dev *dev = child->self;
287         u8 io_base_lo, io_limit_lo;
288         unsigned long base, limit;
289         struct resource *res;
290
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;
296
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);
303         }
304
305         if (base && base <= limit) {
306                 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
307                 if (!res->start)
308                         res->start = base;
309                 if (!res->end)
310                         res->end = limit + 0xfff;
311                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
312         } else {
313                 dev_printk(KERN_DEBUG, &dev->dev,
314                          "  bridge window [io  %#06lx-%#06lx] (disabled)\n",
315                                  base, limit);
316         }
317 }
318
319 static void __devinit pci_read_bridge_mmio(struct pci_bus *child)
320 {
321         struct pci_dev *dev = child->self;
322         u16 mem_base_lo, mem_limit_lo;
323         unsigned long base, limit;
324         struct resource *res;
325
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;
333                 res->start = base;
334                 res->end = limit + 0xfffff;
335                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
336         } else {
337                 dev_printk(KERN_DEBUG, &dev->dev,
338                         "  bridge window [mem %#010lx-%#010lx] (disabled)\n",
339                                          base, limit + 0xfffff);
340         }
341 }
342
343 static void __devinit pci_read_bridge_mmio_pref(struct pci_bus *child)
344 {
345         struct pci_dev *dev = child->self;
346         u16 mem_base_lo, mem_limit_lo;
347         unsigned long base, limit;
348         struct resource *res;
349
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;
355
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);
360
361                 /*
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.
365                  */
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;
370 #else
371                         if (mem_base_hi || mem_limit_hi) {
372                                 dev_err(&dev->dev, "can't handle 64-bit "
373                                         "address space for bridge\n");
374                                 return;
375                         }
376 #endif
377                 }
378         }
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;
384                 res->start = base;
385                 res->end = limit + 0xfffff;
386                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
387         } else {
388                 dev_printk(KERN_DEBUG, &dev->dev,
389                      "  bridge window [mem %#010lx-%#010lx pref] (disabled)\n",
390                                          base, limit + 0xfffff);
391         }
392 }
393
394 void __devinit pci_read_bridge_bases(struct pci_bus *child)
395 {
396         struct pci_dev *dev = child->self;
397         struct resource *res;
398         int i;
399
400         if (pci_is_root_bus(child))     /* It's a host bus, nothing to read */
401                 return;
402
403         dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
404                  child->secondary, child->subordinate,
405                  dev->transparent ? " (subtractive decode)" : "");
406
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];
410
411         pci_read_bridge_io(child);
412         pci_read_bridge_mmio(child);
413         pci_read_bridge_mmio_pref(child);
414
415         if (dev->transparent) {
416                 pci_bus_for_each_resource(child->parent, res, i) {
417                         if (res) {
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",
422                                            res);
423                         }
424                 }
425         }
426 }
427
428 static struct pci_bus * pci_alloc_bus(void)
429 {
430         struct pci_bus *b;
431
432         b = kzalloc(sizeof(*b), GFP_KERNEL);
433         if (b) {
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;
441         }
442         return b;
443 }
444
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 */
462 };
463
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 */
481 };
482
483 void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
484 {
485         bus->cur_bus_speed = pcie_link_speed[linksta & 0xf];
486 }
487 EXPORT_SYMBOL_GPL(pcie_update_link_speed);
488
489 static unsigned char agp_speeds[] = {
490         AGP_UNKNOWN,
491         AGP_1X,
492         AGP_2X,
493         AGP_4X,
494         AGP_8X
495 };
496
497 static enum pci_bus_speed agp_speed(int agp3, int agpstat)
498 {
499         int index = 0;
500
501         if (agpstat & 4)
502                 index = 3;
503         else if (agpstat & 2)
504                 index = 2;
505         else if (agpstat & 1)
506                 index = 1;
507         else
508                 goto out;
509         
510         if (agp3) {
511                 index += 2;
512                 if (index == 5)
513                         index = 0;
514         }
515
516  out:
517         return agp_speeds[index];
518 }
519
520
521 static void pci_set_bus_speed(struct pci_bus *bus)
522 {
523         struct pci_dev *bridge = bus->self;
524         int pos;
525
526         pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
527         if (!pos)
528                 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
529         if (pos) {
530                 u32 agpstat, agpcmd;
531
532                 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
533                 bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
534
535                 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
536                 bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
537         }
538
539         pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
540         if (pos) {
541                 u16 status;
542                 enum pci_bus_speed max;
543                 pci_read_config_word(bridge, pos + 2, &status);
544
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;
552                         } else {
553                                 max = PCI_SPEED_133MHz_PCIX;
554                         }
555                 } else {
556                         max = PCI_SPEED_66MHz_PCIX;
557                 }
558
559                 bus->max_bus_speed = max;
560                 bus->cur_bus_speed = pcix_bus_speed[(status >> 6) & 0xf];
561
562                 return;
563         }
564
565         pos = pci_find_capability(bridge, PCI_CAP_ID_EXP);
566         if (pos) {
567                 u32 linkcap;
568                 u16 linksta;
569
570                 pci_read_config_dword(bridge, pos + PCI_EXP_LNKCAP, &linkcap);
571                 bus->max_bus_speed = pcie_link_speed[linkcap & 0xf];
572
573                 pci_read_config_word(bridge, pos + PCI_EXP_LNKSTA, &linksta);
574                 pcie_update_link_speed(bus, linksta);
575         }
576 }
577
578
579 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
580                                            struct pci_dev *bridge, int busnr)
581 {
582         struct pci_bus *child;
583         int i;
584
585         /*
586          * Allocate a new bus, and inherit stuff from the parent..
587          */
588         child = pci_alloc_bus();
589         if (!child)
590                 return NULL;
591
592         child->parent = parent;
593         child->ops = parent->ops;
594         child->sysdata = parent->sysdata;
595         child->bus_flags = parent->bus_flags;
596
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()
600          */
601         child->dev.class = &pcibus_class;
602         dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
603
604         /*
605          * Set up the primary, secondary and subordinate
606          * bus numbers.
607          */
608         child->number = child->secondary = busnr;
609         child->primary = parent->secondary;
610         child->subordinate = 0xff;
611
612         if (!bridge)
613                 return child;
614
615         child->self = bridge;
616         child->bridge = get_device(&bridge->dev);
617
618         pci_set_bus_speed(child);
619
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;
624         }
625         bridge->subordinate = child;
626
627         return child;
628 }
629
630 struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
631 {
632         struct pci_bus *child;
633
634         child = pci_alloc_child_bus(parent, dev, busnr);
635         if (child) {
636                 down_write(&pci_bus_sem);
637                 list_add_tail(&child->node, &parent->children);
638                 up_write(&pci_bus_sem);
639         }
640         return child;
641 }
642
643 static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
644 {
645         struct pci_bus *parent = child->parent;
646
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())
650                 return;
651
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;
656         }
657 }
658
659 /*
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.
663  *
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.
668  */
669 int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
670 {
671         struct pci_bus *child;
672         int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
673         u32 buses, i, j = 0;
674         u16 bctl;
675         u8 primary, secondary, subordinate;
676         int broken = 0;
677
678         pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
679         primary = buses & 0xFF;
680         secondary = (buses >> 8) & 0xFF;
681         subordinate = (buses >> 16) & 0xFF;
682
683         dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
684                 secondary, subordinate, pass);
685
686         /* Check if setup is sensible at all */
687         if (!pass &&
688             (primary != bus->number || secondary <= bus->number)) {
689                 dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n");
690                 broken = 1;
691         }
692
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);
698
699         if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
700             !is_cardbus && !broken) {
701                 unsigned int cmax;
702                 /*
703                  * Bus already configured by firmware, process it in the first
704                  * pass and just note the configuration.
705                  */
706                 if (pass)
707                         goto out;
708
709                 /*
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.
712                  *
713                  * However, we continue to descend down the hierarchy and
714                  * scan remaining child buses.
715                  */
716                 child = pci_find_bus(pci_domain_nr(bus), secondary);
717                 if (!child) {
718                         child = pci_add_new_bus(bus, dev, secondary);
719                         if (!child)
720                                 goto out;
721                         child->primary = primary;
722                         child->subordinate = subordinate;
723                         child->bridge_ctl = bctl;
724                 }
725
726                 cmax = pci_scan_child_bus(child);
727                 if (cmax > max)
728                         max = cmax;
729                 if (child->subordinate > max)
730                         max = child->subordinate;
731         } else {
732                 /*
733                  * We need to assign a number to this bus which we always
734                  * do in the second pass.
735                  */
736                 if (!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
743                                    bus ranges. */
744                                 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
745                                                        buses & ~0xffffff);
746                         goto out;
747                 }
748
749                 /* Clear errors */
750                 pci_write_config_word(dev, PCI_STATUS, 0xffff);
751
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))
755                         goto out;
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);
761
762                 /*
763                  * yenta.c forces a secondary latency timer of 176.
764                  * Copy that behaviour here.
765                  */
766                 if (is_cardbus) {
767                         buses &= ~0xff000000;
768                         buses |= CARDBUS_LATENCY_TIMER << 24;
769                 }
770                         
771                 /*
772                  * We need to blast all three values with a single write.
773                  */
774                 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
775
776                 if (!is_cardbus) {
777                         child->bridge_ctl = bctl;
778                         /*
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
782                          * was lazy.
783                          */
784                         pci_fixup_parent_subordinate_busnr(child, max);
785                         /* Now we can scan all subordinate buses... */
786                         max = pci_scan_child_bus(child);
787                         /*
788                          * now fix it up again since we have found
789                          * the real value of max.
790                          */
791                         pci_fixup_parent_subordinate_busnr(child, max);
792                 } else {
793                         /*
794                          * For CardBus bridges, we leave 4 bus numbers
795                          * as cards with a PCI-to-PCI bridge can be
796                          * inserted later.
797                          */
798                         for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
799                                 struct pci_bus *parent = bus;
800                                 if (pci_find_bus(pci_domain_nr(bus),
801                                                         max+i+1))
802                                         break;
803                                 while (parent->parent) {
804                                         if ((!pcibios_assign_all_busses()) &&
805                                             (parent->subordinate > max) &&
806                                             (parent->subordinate <= max+i)) {
807                                                 j = 1;
808                                         }
809                                         parent = parent->parent;
810                                 }
811                                 if (j) {
812                                         /*
813                                          * Often, there are two cardbus bridges
814                                          * -- try to leave one valid bus number
815                                          * for each one.
816                                          */
817                                         i /= 2;
818                                         break;
819                                 }
820                         }
821                         max += i;
822                         pci_fixup_parent_subordinate_busnr(child, max);
823                 }
824                 /*
825                  * Set the subordinate bus number to its real value.
826                  */
827                 child->subordinate = max;
828                 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
829         }
830
831         sprintf(child->name,
832                 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
833                 pci_domain_nr(bus), child->number);
834
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" : "",
848                                 dev_name(&bus->dev),
849                                 bus->number, bus->subordinate);
850                 }
851                 bus = bus->parent;
852         }
853
854 out:
855         pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
856
857         return max;
858 }
859
860 /*
861  * Read interrupt line and base address registers.
862  * The architecture-dependent code can tweak these, of course.
863  */
864 static void pci_read_irq(struct pci_dev *dev)
865 {
866         unsigned char irq;
867
868         pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
869         dev->pin = irq;
870         if (irq)
871                 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
872         dev->irq = irq;
873 }
874
875 void set_pcie_port_type(struct pci_dev *pdev)
876 {
877         int pos;
878         u16 reg16;
879
880         pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
881         if (!pos)
882                 return;
883         pdev->is_pcie = 1;
884         pdev->pcie_cap = pos;
885         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
886         pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
887 }
888
889 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
890 {
891         int pos;
892         u16 reg16;
893         u32 reg32;
894
895         pos = pci_pcie_cap(pdev);
896         if (!pos)
897                 return;
898         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
899         if (!(reg16 & PCI_EXP_FLAGS_SLOT))
900                 return;
901         pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, &reg32);
902         if (reg32 & PCI_EXP_SLTCAP_HPC)
903                 pdev->is_hotplug_bridge = 1;
904 }
905
906 #define LEGACY_IO_RESOURCE      (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
907
908 /**
909  * pci_setup_device - fill in class and map information of a device
910  * @dev: the device structure to fill
911  *
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).
917  */
918 int pci_setup_device(struct pci_dev *dev)
919 {
920         u32 class;
921         u8 hdr_type;
922         struct pci_slot *slot;
923         int pos = 0;
924
925         if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
926                 return -EIO;
927
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);
935
936         list_for_each_entry(slot, &dev->bus->slots, list)
937                 if (PCI_SLOT(dev->devfn) == slot->number)
938                         dev->slot = slot;
939
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;
943
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));
947
948         pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
949         dev->revision = class & 0xff;
950         class >>= 8;                                /* upper 3 bytes */
951         dev->class = class;
952         class >>= 8;
953
954         dev_dbg(&dev->dev, "found [%04x:%04x] class %06x header type %02x\n",
955                  dev->vendor, dev->device, class, dev->hdr_type);
956
957         /* need to have dev->class ready */
958         dev->cfg_size = pci_cfg_space_size(dev);
959
960         /* "Unknown power state" */
961         dev->current_state = PCI_UNKNOWN;
962
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;
967
968         switch (dev->hdr_type) {                    /* header type */
969         case PCI_HEADER_TYPE_NORMAL:                /* standard header */
970                 if (class == PCI_CLASS_BRIDGE_PCI)
971                         goto bad;
972                 pci_read_irq(dev);
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);
976
977                 /*
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!
982                  */
983                 if (class == PCI_CLASS_STORAGE_IDE) {
984                         u8 progif;
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;
993                         }
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;
1001                         }
1002                 }
1003                 break;
1004
1005         case PCI_HEADER_TYPE_BRIDGE:                /* bridge header */
1006                 if (class != PCI_CLASS_BRIDGE_PCI)
1007                         goto bad;
1008                 /* The PCI-to-PCI bridge spec requires that subtractive
1009                    decoding (i.e. transparent) bridge must have programming
1010                    interface code of 0x01. */ 
1011                 pci_read_irq(dev);
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);
1016                 if (pos) {
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);
1019                 }
1020                 break;
1021
1022         case PCI_HEADER_TYPE_CARDBUS:               /* CardBus bridge header */
1023                 if (class != PCI_CLASS_BRIDGE_CARDBUS)
1024                         goto bad;
1025                 pci_read_irq(dev);
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);
1029                 break;
1030
1031         default:                                    /* unknown header */
1032                 dev_err(&dev->dev, "unknown header type %02x, "
1033                         "ignoring device\n", dev->hdr_type);
1034                 return -EIO;
1035
1036         bad:
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;
1040         }
1041
1042         /* We found a fine healthy device, go go go... */
1043         return 0;
1044 }
1045
1046 static void pci_release_capabilities(struct pci_dev *dev)
1047 {
1048         pci_vpd_release(dev);
1049         pci_iov_release(dev);
1050 }
1051
1052 /**
1053  * pci_release_dev - free a pci device structure when all users of it are finished.
1054  * @dev: device that's been disconnected
1055  *
1056  * Will be called only by the device core when all users of this pci device are
1057  * done.
1058  */
1059 static void pci_release_dev(struct device *dev)
1060 {
1061         struct pci_dev *pci_dev;
1062
1063         pci_dev = to_pci_dev(dev);
1064         pci_release_capabilities(pci_dev);
1065         kfree(pci_dev);
1066 }
1067
1068 /**
1069  * pci_cfg_space_size - get the configuration space size of the PCI device.
1070  * @dev: PCI device
1071  *
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.
1078  */
1079 int pci_cfg_space_size_ext(struct pci_dev *dev)
1080 {
1081         u32 status;
1082         int pos = PCI_CFG_SPACE_SIZE;
1083
1084         if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1085                 goto fail;
1086         if (status == 0xffffffff)
1087                 goto fail;
1088
1089         return PCI_CFG_SPACE_EXP_SIZE;
1090
1091  fail:
1092         return PCI_CFG_SPACE_SIZE;
1093 }
1094
1095 int pci_cfg_space_size(struct pci_dev *dev)
1096 {
1097         int pos;
1098         u32 status;
1099         u16 class;
1100
1101         class = dev->class >> 8;
1102         if (class == PCI_CLASS_BRIDGE_HOST)
1103                 return pci_cfg_space_size_ext(dev);
1104
1105         pos = pci_pcie_cap(dev);
1106         if (!pos) {
1107                 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1108                 if (!pos)
1109                         goto fail;
1110
1111                 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1112                 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1113                         goto fail;
1114         }
1115
1116         return pci_cfg_space_size_ext(dev);
1117
1118  fail:
1119         return PCI_CFG_SPACE_SIZE;
1120 }
1121
1122 static void pci_release_bus_bridge_dev(struct device *dev)
1123 {
1124         kfree(dev);
1125 }
1126
1127 struct pci_dev *alloc_pci_dev(void)
1128 {
1129         struct pci_dev *dev;
1130
1131         dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1132         if (!dev)
1133                 return NULL;
1134
1135         INIT_LIST_HEAD(&dev->bus_list);
1136
1137         return dev;
1138 }
1139 EXPORT_SYMBOL(alloc_pci_dev);
1140
1141 /*
1142  * Read the config data for a PCI device, sanity-check it
1143  * and fill in the dev structure...
1144  */
1145 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1146 {
1147         struct pci_dev *dev;
1148         u32 l;
1149         int delay = 1;
1150
1151         if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1152                 return NULL;
1153
1154         /* some broken boards return 0 or ~0 if a slot is empty: */
1155         if (l == 0xffffffff || l == 0x00000000 ||
1156             l == 0x0000ffff || l == 0xffff0000)
1157                 return NULL;
1158
1159         /* Configuration request Retry Status */
1160         while (l == 0xffff0001) {
1161                 msleep(delay);
1162                 delay *= 2;
1163                 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1164                         return NULL;
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),
1170                                         PCI_FUNC(devfn));
1171                         return NULL;
1172                 }
1173         }
1174
1175         dev = alloc_pci_dev();
1176         if (!dev)
1177                 return NULL;
1178
1179         dev->bus = bus;
1180         dev->devfn = devfn;
1181         dev->vendor = l & 0xffff;
1182         dev->device = (l >> 16) & 0xffff;
1183
1184         if (pci_setup_device(dev)) {
1185                 kfree(dev);
1186                 return NULL;
1187         }
1188
1189         return dev;
1190 }
1191
1192 static void pci_init_capabilities(struct pci_dev *dev)
1193 {
1194         /* MSI/MSI-X list */
1195         pci_msi_init_pci_dev(dev);
1196
1197         /* Buffers for saving PCIe and PCI-X capabilities */
1198         pci_allocate_cap_save_buffers(dev);
1199
1200         /* Power Management */
1201         pci_pm_init(dev);
1202         platform_pci_wakeup_init(dev);
1203
1204         /* Vital Product Data */
1205         pci_vpd_pci22_init(dev);
1206
1207         /* Alternative Routing-ID Forwarding */
1208         pci_enable_ari(dev);
1209
1210         /* Single Root I/O Virtualization */
1211         pci_iov_init(dev);
1212
1213         /* Enable ACS P2P upstream forwarding */
1214         pci_enable_acs(dev);
1215 }
1216
1217 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1218 {
1219         device_initialize(&dev->dev);
1220         dev->dev.release = pci_release_dev;
1221         pci_dev_get(dev);
1222
1223         dev->dev.dma_mask = &dev->dma_mask;
1224         dev->dev.dma_parms = &dev->dma_parms;
1225         dev->dev.coherent_dma_mask = 0xffffffffull;
1226
1227         pci_set_dma_max_seg_size(dev, 65536);
1228         pci_set_dma_seg_boundary(dev, 0xffffffff);
1229
1230         /* Fix up broken headers */
1231         pci_fixup_device(pci_fixup_header, dev);
1232
1233         /* Clear the state_saved flag. */
1234         dev->state_saved = false;
1235
1236         /* Initialize various capabilities */
1237         pci_init_capabilities(dev);
1238
1239         /*
1240          * Add the device to our list of discovered devices
1241          * and the bus list for fixup functions, etc.
1242          */
1243         down_write(&pci_bus_sem);
1244         list_add_tail(&dev->bus_list, &bus->devices);
1245         up_write(&pci_bus_sem);
1246 }
1247
1248 struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
1249 {
1250         struct pci_dev *dev;
1251
1252         dev = pci_get_slot(bus, devfn);
1253         if (dev) {
1254                 pci_dev_put(dev);
1255                 return dev;
1256         }
1257
1258         dev = pci_scan_device(bus, devfn);
1259         if (!dev)
1260                 return NULL;
1261
1262         pci_device_add(dev, bus);
1263
1264         return dev;
1265 }
1266 EXPORT_SYMBOL(pci_scan_single_device);
1267
1268 static unsigned next_ari_fn(struct pci_dev *dev, unsigned fn)
1269 {
1270         u16 cap;
1271         unsigned pos, next_fn;
1272
1273         if (!dev)
1274                 return 0;
1275
1276         pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1277         if (!pos)
1278                 return 0;
1279         pci_read_config_word(dev, pos + 4, &cap);
1280         next_fn = cap >> 8;
1281         if (next_fn <= fn)
1282                 return 0;
1283         return next_fn;
1284 }
1285
1286 static unsigned next_trad_fn(struct pci_dev *dev, unsigned fn)
1287 {
1288         return (fn + 1) % 8;
1289 }
1290
1291 static unsigned no_next_fn(struct pci_dev *dev, unsigned fn)
1292 {
1293         return 0;
1294 }
1295
1296 static int only_one_child(struct pci_bus *bus)
1297 {
1298         struct pci_dev *parent = bus->self;
1299         if (!parent || !pci_is_pcie(parent))
1300                 return 0;
1301         if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
1302             parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
1303                 return 1;
1304         return 0;
1305 }
1306
1307 /**
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.)
1311  *
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.
1315  *
1316  * Returns the number of new devices found.
1317  */
1318 int pci_scan_slot(struct pci_bus *bus, int devfn)
1319 {
1320         unsigned fn, nr = 0;
1321         struct pci_dev *dev;
1322         unsigned (*next_fn)(struct pci_dev *, unsigned) = no_next_fn;
1323
1324         if (only_one_child(bus) && (devfn > 0))
1325                 return 0; /* Already scanned the entire slot */
1326
1327         dev = pci_scan_single_device(bus, devfn);
1328         if (!dev)
1329                 return 0;
1330         if (!dev->is_added)
1331                 nr++;
1332
1333         if (pci_ari_enabled(bus))
1334                 next_fn = next_ari_fn;
1335         else if (dev->multifunction)
1336                 next_fn = next_trad_fn;
1337
1338         for (fn = next_fn(dev, 0); fn > 0; fn = next_fn(dev, fn)) {
1339                 dev = pci_scan_single_device(bus, devfn + fn);
1340                 if (dev) {
1341                         if (!dev->is_added)
1342                                 nr++;
1343                         dev->multifunction = 1;
1344                 }
1345         }
1346
1347         /* only one slot has pcie device */
1348         if (bus->self && nr)
1349                 pcie_aspm_init_link_state(bus->self);
1350
1351         return nr;
1352 }
1353
1354 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1355 {
1356         unsigned int devfn, pass, max = bus->secondary;
1357         struct pci_dev *dev;
1358
1359         dev_dbg(&bus->dev, "scanning bus\n");
1360
1361         /* Go find them, Rover! */
1362         for (devfn = 0; devfn < 0x100; devfn += 8)
1363                 pci_scan_slot(bus, devfn);
1364
1365         /* Reserve buses for SR-IOV capability. */
1366         max += pci_iov_bus_range(bus);
1367
1368         /*
1369          * After performing arch-dependent fixup of the bus, look behind
1370          * all PCI-to-PCI bridges on this bus.
1371          */
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))
1376                         bus->is_added = 1;
1377         }
1378
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);
1384                 }
1385
1386         /*
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
1389          * any devices.
1390          *
1391          * Return how far we've got finding sub-buses.
1392          */
1393         dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1394         return max;
1395 }
1396
1397 struct pci_bus * pci_create_bus(struct device *parent,
1398                 int bus, struct pci_ops *ops, void *sysdata)
1399 {
1400         int error;
1401         struct pci_bus *b, *b2;
1402         struct device *dev;
1403
1404         b = pci_alloc_bus();
1405         if (!b)
1406                 return NULL;
1407
1408         dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1409         if (!dev){
1410                 kfree(b);
1411                 return NULL;
1412         }
1413
1414         b->sysdata = sysdata;
1415         b->ops = ops;
1416
1417         b2 = pci_find_bus(pci_domain_nr(b), bus);
1418         if (b2) {
1419                 /* If we already got to this bus through a different bridge, ignore it */
1420                 dev_dbg(&b2->dev, "bus already known\n");
1421                 goto err_out;
1422         }
1423
1424         down_write(&pci_bus_sem);
1425         list_add_tail(&b->node, &pci_root_buses);
1426         up_write(&pci_bus_sem);
1427
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);
1432         if (error)
1433                 goto dev_reg_err;
1434         b->bridge = get_device(dev);
1435         device_enable_async_suspend(b->bridge);
1436
1437         if (!parent)
1438                 set_dev_node(b->bridge, pcibus_to_node(b));
1439
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);
1444         if (error)
1445                 goto class_dev_reg_err;
1446         error = device_create_file(&b->dev, &dev_attr_cpuaffinity);
1447         if (error)
1448                 goto dev_create_file_err;
1449
1450         /* Create legacy_io and legacy_mem files for this bus */
1451         pci_create_legacy_files(b);
1452
1453         b->number = b->secondary = bus;
1454         b->resource[0] = &ioport_resource;
1455         b->resource[1] = &iomem_resource;
1456
1457         return b;
1458
1459 dev_create_file_err:
1460         device_unregister(&b->dev);
1461 class_dev_reg_err:
1462         device_unregister(dev);
1463 dev_reg_err:
1464         down_write(&pci_bus_sem);
1465         list_del(&b->node);
1466         up_write(&pci_bus_sem);
1467 err_out:
1468         kfree(dev);
1469         kfree(b);
1470         return NULL;
1471 }
1472
1473 struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
1474                 int bus, struct pci_ops *ops, void *sysdata)
1475 {
1476         struct pci_bus *b;
1477
1478         b = pci_create_bus(parent, bus, ops, sysdata);
1479         if (b)
1480                 b->subordinate = pci_scan_child_bus(b);
1481         return b;
1482 }
1483 EXPORT_SYMBOL(pci_scan_bus_parented);
1484
1485 #ifdef CONFIG_HOTPLUG
1486 /**
1487  * pci_rescan_bus - scan a PCI bus for devices.
1488  * @bus: PCI bus to scan
1489  *
1490  * Scan a PCI bus and child buses for new devices, adds them,
1491  * and enables them.
1492  *
1493  * Returns the max number of subordinate bus discovered.
1494  */
1495 unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
1496 {
1497         unsigned int max;
1498         struct pci_dev *dev;
1499
1500         max = pci_scan_child_bus(bus);
1501
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);
1509
1510         pci_bus_assign_resources(bus);
1511         pci_enable_bridges(bus);
1512         pci_bus_add_devices(bus);
1513
1514         return max;
1515 }
1516 EXPORT_SYMBOL_GPL(pci_rescan_bus);
1517
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);
1522 #endif
1523
1524 static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
1525 {
1526         const struct pci_dev *a = to_pci_dev(d_a);
1527         const struct pci_dev *b = to_pci_dev(d_b);
1528
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;
1531
1532         if      (a->bus->number < b->bus->number) return -1;
1533         else if (a->bus->number > b->bus->number) return  1;
1534
1535         if      (a->devfn < b->devfn) return -1;
1536         else if (a->devfn > b->devfn) return  1;
1537
1538         return 0;
1539 }
1540
1541 void __init pci_sort_breadthfirst(void)
1542 {
1543         bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
1544 }