Merge tag 'trace-seq-buf-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/roste...
[cascardo/linux.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/pci_hotplug.h>
10 #include <linux/slab.h>
11 #include <linux/module.h>
12 #include <linux/cpumask.h>
13 #include <linux/pci-aspm.h>
14 #include <asm-generic/pci-bridge.h>
15 #include "pci.h"
16
17 #define CARDBUS_LATENCY_TIMER   176     /* secondary latency timer */
18 #define CARDBUS_RESERVE_BUSNR   3
19
20 static struct resource busn_resource = {
21         .name   = "PCI busn",
22         .start  = 0,
23         .end    = 255,
24         .flags  = IORESOURCE_BUS,
25 };
26
27 /* Ugh.  Need to stop exporting this to modules. */
28 LIST_HEAD(pci_root_buses);
29 EXPORT_SYMBOL(pci_root_buses);
30
31 static LIST_HEAD(pci_domain_busn_res_list);
32
33 struct pci_domain_busn_res {
34         struct list_head list;
35         struct resource res;
36         int domain_nr;
37 };
38
39 static struct resource *get_pci_domain_busn_res(int domain_nr)
40 {
41         struct pci_domain_busn_res *r;
42
43         list_for_each_entry(r, &pci_domain_busn_res_list, list)
44                 if (r->domain_nr == domain_nr)
45                         return &r->res;
46
47         r = kzalloc(sizeof(*r), GFP_KERNEL);
48         if (!r)
49                 return NULL;
50
51         r->domain_nr = domain_nr;
52         r->res.start = 0;
53         r->res.end = 0xff;
54         r->res.flags = IORESOURCE_BUS | IORESOURCE_PCI_FIXED;
55
56         list_add_tail(&r->list, &pci_domain_busn_res_list);
57
58         return &r->res;
59 }
60
61 static int find_anything(struct device *dev, void *data)
62 {
63         return 1;
64 }
65
66 /*
67  * Some device drivers need know if pci is initiated.
68  * Basically, we think pci is not initiated when there
69  * is no device to be found on the pci_bus_type.
70  */
71 int no_pci_devices(void)
72 {
73         struct device *dev;
74         int no_devices;
75
76         dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
77         no_devices = (dev == NULL);
78         put_device(dev);
79         return no_devices;
80 }
81 EXPORT_SYMBOL(no_pci_devices);
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         pci_bus_remove_resources(pci_bus);
93         pci_release_bus_of_node(pci_bus);
94         kfree(pci_bus);
95 }
96
97 static struct class pcibus_class = {
98         .name           = "pci_bus",
99         .dev_release    = &release_pcibus_dev,
100         .dev_groups     = pcibus_groups,
101 };
102
103 static int __init pcibus_class_init(void)
104 {
105         return class_register(&pcibus_class);
106 }
107 postcore_initcall(pcibus_class_init);
108
109 static u64 pci_size(u64 base, u64 maxbase, u64 mask)
110 {
111         u64 size = mask & maxbase;      /* Find the significant bits */
112         if (!size)
113                 return 0;
114
115         /* Get the lowest of them to find the decode size, and
116            from that the extent.  */
117         size = (size & ~(size-1)) - 1;
118
119         /* base == maxbase can be valid only if the BAR has
120            already been programmed with all 1s.  */
121         if (base == maxbase && ((base | size) & mask) != mask)
122                 return 0;
123
124         return size;
125 }
126
127 static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
128 {
129         u32 mem_type;
130         unsigned long flags;
131
132         if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
133                 flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
134                 flags |= IORESOURCE_IO;
135                 return flags;
136         }
137
138         flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
139         flags |= IORESOURCE_MEM;
140         if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
141                 flags |= IORESOURCE_PREFETCH;
142
143         mem_type = bar & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
144         switch (mem_type) {
145         case PCI_BASE_ADDRESS_MEM_TYPE_32:
146                 break;
147         case PCI_BASE_ADDRESS_MEM_TYPE_1M:
148                 /* 1M mem BAR treated as 32-bit BAR */
149                 break;
150         case PCI_BASE_ADDRESS_MEM_TYPE_64:
151                 flags |= IORESOURCE_MEM_64;
152                 break;
153         default:
154                 /* mem unknown type treated as 32-bit BAR */
155                 break;
156         }
157         return flags;
158 }
159
160 #define PCI_COMMAND_DECODE_ENABLE       (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)
161
162 /**
163  * pci_read_base - read a PCI BAR
164  * @dev: the PCI device
165  * @type: type of the BAR
166  * @res: resource buffer to be filled in
167  * @pos: BAR position in the config space
168  *
169  * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
170  */
171 int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
172                     struct resource *res, unsigned int pos)
173 {
174         u32 l, sz, mask;
175         u64 l64, sz64, mask64;
176         u16 orig_cmd;
177         struct pci_bus_region region, inverted_region;
178         bool bar_too_big = false, bar_too_high = false, bar_invalid = false;
179
180         mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
181
182         /* No printks while decoding is disabled! */
183         if (!dev->mmio_always_on) {
184                 pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
185                 if (orig_cmd & PCI_COMMAND_DECODE_ENABLE) {
186                         pci_write_config_word(dev, PCI_COMMAND,
187                                 orig_cmd & ~PCI_COMMAND_DECODE_ENABLE);
188                 }
189         }
190
191         res->name = pci_name(dev);
192
193         pci_read_config_dword(dev, pos, &l);
194         pci_write_config_dword(dev, pos, l | mask);
195         pci_read_config_dword(dev, pos, &sz);
196         pci_write_config_dword(dev, pos, l);
197
198         /*
199          * All bits set in sz means the device isn't working properly.
200          * If the BAR isn't implemented, all bits must be 0.  If it's a
201          * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
202          * 1 must be clear.
203          */
204         if (!sz || sz == 0xffffffff)
205                 goto fail;
206
207         /*
208          * I don't know how l can have all bits set.  Copied from old code.
209          * Maybe it fixes a bug on some ancient platform.
210          */
211         if (l == 0xffffffff)
212                 l = 0;
213
214         if (type == pci_bar_unknown) {
215                 res->flags = decode_bar(dev, l);
216                 res->flags |= IORESOURCE_SIZEALIGN;
217                 if (res->flags & IORESOURCE_IO) {
218                         l &= PCI_BASE_ADDRESS_IO_MASK;
219                         mask = PCI_BASE_ADDRESS_IO_MASK & (u32) IO_SPACE_LIMIT;
220                 } else {
221                         l &= PCI_BASE_ADDRESS_MEM_MASK;
222                         mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
223                 }
224         } else {
225                 res->flags |= (l & IORESOURCE_ROM_ENABLE);
226                 l &= PCI_ROM_ADDRESS_MASK;
227                 mask = (u32)PCI_ROM_ADDRESS_MASK;
228         }
229
230         if (res->flags & IORESOURCE_MEM_64) {
231                 l64 = l;
232                 sz64 = sz;
233                 mask64 = mask | (u64)~0 << 32;
234
235                 pci_read_config_dword(dev, pos + 4, &l);
236                 pci_write_config_dword(dev, pos + 4, ~0);
237                 pci_read_config_dword(dev, pos + 4, &sz);
238                 pci_write_config_dword(dev, pos + 4, l);
239
240                 l64 |= ((u64)l << 32);
241                 sz64 |= ((u64)sz << 32);
242
243                 sz64 = pci_size(l64, sz64, mask64);
244
245                 if (!sz64)
246                         goto fail;
247
248                 if ((sizeof(dma_addr_t) < 8 || sizeof(resource_size_t) < 8) &&
249                     sz64 > 0x100000000ULL) {
250                         res->flags |= IORESOURCE_UNSET | IORESOURCE_DISABLED;
251                         res->start = 0;
252                         res->end = 0;
253                         bar_too_big = true;
254                         goto out;
255                 }
256
257                 if ((sizeof(dma_addr_t) < 8) && l) {
258                         /* Above 32-bit boundary; try to reallocate */
259                         res->flags |= IORESOURCE_UNSET;
260                         res->start = 0;
261                         res->end = sz64;
262                         bar_too_high = true;
263                         goto out;
264                 } else {
265                         region.start = l64;
266                         region.end = l64 + sz64;
267                 }
268         } else {
269                 sz = pci_size(l, sz, mask);
270
271                 if (!sz)
272                         goto fail;
273
274                 region.start = l;
275                 region.end = l + sz;
276         }
277
278         pcibios_bus_to_resource(dev->bus, res, &region);
279         pcibios_resource_to_bus(dev->bus, &inverted_region, res);
280
281         /*
282          * If "A" is a BAR value (a bus address), "bus_to_resource(A)" is
283          * the corresponding resource address (the physical address used by
284          * the CPU.  Converting that resource address back to a bus address
285          * should yield the original BAR value:
286          *
287          *     resource_to_bus(bus_to_resource(A)) == A
288          *
289          * If it doesn't, CPU accesses to "bus_to_resource(A)" will not
290          * be claimed by the device.
291          */
292         if (inverted_region.start != region.start) {
293                 res->flags |= IORESOURCE_UNSET;
294                 res->start = 0;
295                 res->end = region.end - region.start;
296                 bar_invalid = true;
297         }
298
299         goto out;
300
301
302 fail:
303         res->flags = 0;
304 out:
305         if (!dev->mmio_always_on &&
306             (orig_cmd & PCI_COMMAND_DECODE_ENABLE))
307                 pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
308
309         if (bar_too_big)
310                 dev_err(&dev->dev, "reg 0x%x: can't handle BAR larger than 4GB (size %#010llx)\n",
311                         pos, (unsigned long long) sz64);
312         if (bar_too_high)
313                 dev_info(&dev->dev, "reg 0x%x: can't handle BAR above 4G (bus address %#010llx)\n",
314                          pos, (unsigned long long) l64);
315         if (bar_invalid)
316                 dev_info(&dev->dev, "reg 0x%x: initial BAR value %#010llx invalid\n",
317                          pos, (unsigned long long) region.start);
318         if (res->flags)
319                 dev_printk(KERN_DEBUG, &dev->dev, "reg 0x%x: %pR\n", pos, res);
320
321         return (res->flags & IORESOURCE_MEM_64) ? 1 : 0;
322 }
323
324 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
325 {
326         unsigned int pos, reg;
327
328         for (pos = 0; pos < howmany; pos++) {
329                 struct resource *res = &dev->resource[pos];
330                 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
331                 pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
332         }
333
334         if (rom) {
335                 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
336                 dev->rom_base_reg = rom;
337                 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
338                                 IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
339                                 IORESOURCE_SIZEALIGN;
340                 __pci_read_base(dev, pci_bar_mem32, res, rom);
341         }
342 }
343
344 static void pci_read_bridge_io(struct pci_bus *child)
345 {
346         struct pci_dev *dev = child->self;
347         u8 io_base_lo, io_limit_lo;
348         unsigned long io_mask, io_granularity, base, limit;
349         struct pci_bus_region region;
350         struct resource *res;
351
352         io_mask = PCI_IO_RANGE_MASK;
353         io_granularity = 0x1000;
354         if (dev->io_window_1k) {
355                 /* Support 1K I/O space granularity */
356                 io_mask = PCI_IO_1K_RANGE_MASK;
357                 io_granularity = 0x400;
358         }
359
360         res = child->resource[0];
361         pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
362         pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
363         base = (io_base_lo & io_mask) << 8;
364         limit = (io_limit_lo & io_mask) << 8;
365
366         if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
367                 u16 io_base_hi, io_limit_hi;
368
369                 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
370                 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
371                 base |= ((unsigned long) io_base_hi << 16);
372                 limit |= ((unsigned long) io_limit_hi << 16);
373         }
374
375         if (base <= limit) {
376                 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
377                 region.start = base;
378                 region.end = limit + io_granularity - 1;
379                 pcibios_bus_to_resource(dev->bus, res, &region);
380                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
381         }
382 }
383
384 static void pci_read_bridge_mmio(struct pci_bus *child)
385 {
386         struct pci_dev *dev = child->self;
387         u16 mem_base_lo, mem_limit_lo;
388         unsigned long base, limit;
389         struct pci_bus_region region;
390         struct resource *res;
391
392         res = child->resource[1];
393         pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
394         pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
395         base = ((unsigned long) mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
396         limit = ((unsigned long) mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
397         if (base <= limit) {
398                 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
399                 region.start = base;
400                 region.end = limit + 0xfffff;
401                 pcibios_bus_to_resource(dev->bus, res, &region);
402                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
403         }
404 }
405
406 static void pci_read_bridge_mmio_pref(struct pci_bus *child)
407 {
408         struct pci_dev *dev = child->self;
409         u16 mem_base_lo, mem_limit_lo;
410         u64 base64, limit64;
411         dma_addr_t base, limit;
412         struct pci_bus_region region;
413         struct resource *res;
414
415         res = child->resource[2];
416         pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
417         pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
418         base64 = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
419         limit64 = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
420
421         if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
422                 u32 mem_base_hi, mem_limit_hi;
423
424                 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
425                 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
426
427                 /*
428                  * Some bridges set the base > limit by default, and some
429                  * (broken) BIOSes do not initialize them.  If we find
430                  * this, just assume they are not being used.
431                  */
432                 if (mem_base_hi <= mem_limit_hi) {
433                         base64 |= (u64) mem_base_hi << 32;
434                         limit64 |= (u64) mem_limit_hi << 32;
435                 }
436         }
437
438         base = (dma_addr_t) base64;
439         limit = (dma_addr_t) limit64;
440
441         if (base != base64) {
442                 dev_err(&dev->dev, "can't handle bridge window above 4GB (bus address %#010llx)\n",
443                         (unsigned long long) base64);
444                 return;
445         }
446
447         if (base <= limit) {
448                 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
449                                          IORESOURCE_MEM | IORESOURCE_PREFETCH;
450                 if (res->flags & PCI_PREF_RANGE_TYPE_64)
451                         res->flags |= IORESOURCE_MEM_64;
452                 region.start = base;
453                 region.end = limit + 0xfffff;
454                 pcibios_bus_to_resource(dev->bus, res, &region);
455                 dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
456         }
457 }
458
459 void pci_read_bridge_bases(struct pci_bus *child)
460 {
461         struct pci_dev *dev = child->self;
462         struct resource *res;
463         int i;
464
465         if (pci_is_root_bus(child))     /* It's a host bus, nothing to read */
466                 return;
467
468         dev_info(&dev->dev, "PCI bridge to %pR%s\n",
469                  &child->busn_res,
470                  dev->transparent ? " (subtractive decode)" : "");
471
472         pci_bus_remove_resources(child);
473         for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
474                 child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
475
476         pci_read_bridge_io(child);
477         pci_read_bridge_mmio(child);
478         pci_read_bridge_mmio_pref(child);
479
480         if (dev->transparent) {
481                 pci_bus_for_each_resource(child->parent, res, i) {
482                         if (res && res->flags) {
483                                 pci_bus_add_resource(child, res,
484                                                      PCI_SUBTRACTIVE_DECODE);
485                                 dev_printk(KERN_DEBUG, &dev->dev,
486                                            "  bridge window %pR (subtractive decode)\n",
487                                            res);
488                         }
489                 }
490         }
491 }
492
493 static struct pci_bus *pci_alloc_bus(struct pci_bus *parent)
494 {
495         struct pci_bus *b;
496
497         b = kzalloc(sizeof(*b), GFP_KERNEL);
498         if (!b)
499                 return NULL;
500
501         INIT_LIST_HEAD(&b->node);
502         INIT_LIST_HEAD(&b->children);
503         INIT_LIST_HEAD(&b->devices);
504         INIT_LIST_HEAD(&b->slots);
505         INIT_LIST_HEAD(&b->resources);
506         b->max_bus_speed = PCI_SPEED_UNKNOWN;
507         b->cur_bus_speed = PCI_SPEED_UNKNOWN;
508 #ifdef CONFIG_PCI_DOMAINS_GENERIC
509         if (parent)
510                 b->domain_nr = parent->domain_nr;
511 #endif
512         return b;
513 }
514
515 static void pci_release_host_bridge_dev(struct device *dev)
516 {
517         struct pci_host_bridge *bridge = to_pci_host_bridge(dev);
518
519         if (bridge->release_fn)
520                 bridge->release_fn(bridge);
521
522         pci_free_resource_list(&bridge->windows);
523
524         kfree(bridge);
525 }
526
527 static struct pci_host_bridge *pci_alloc_host_bridge(struct pci_bus *b)
528 {
529         struct pci_host_bridge *bridge;
530
531         bridge = kzalloc(sizeof(*bridge), GFP_KERNEL);
532         if (!bridge)
533                 return NULL;
534
535         INIT_LIST_HEAD(&bridge->windows);
536         bridge->bus = b;
537         return bridge;
538 }
539
540 static const unsigned char pcix_bus_speed[] = {
541         PCI_SPEED_UNKNOWN,              /* 0 */
542         PCI_SPEED_66MHz_PCIX,           /* 1 */
543         PCI_SPEED_100MHz_PCIX,          /* 2 */
544         PCI_SPEED_133MHz_PCIX,          /* 3 */
545         PCI_SPEED_UNKNOWN,              /* 4 */
546         PCI_SPEED_66MHz_PCIX_ECC,       /* 5 */
547         PCI_SPEED_100MHz_PCIX_ECC,      /* 6 */
548         PCI_SPEED_133MHz_PCIX_ECC,      /* 7 */
549         PCI_SPEED_UNKNOWN,              /* 8 */
550         PCI_SPEED_66MHz_PCIX_266,       /* 9 */
551         PCI_SPEED_100MHz_PCIX_266,      /* A */
552         PCI_SPEED_133MHz_PCIX_266,      /* B */
553         PCI_SPEED_UNKNOWN,              /* C */
554         PCI_SPEED_66MHz_PCIX_533,       /* D */
555         PCI_SPEED_100MHz_PCIX_533,      /* E */
556         PCI_SPEED_133MHz_PCIX_533       /* F */
557 };
558
559 const unsigned char pcie_link_speed[] = {
560         PCI_SPEED_UNKNOWN,              /* 0 */
561         PCIE_SPEED_2_5GT,               /* 1 */
562         PCIE_SPEED_5_0GT,               /* 2 */
563         PCIE_SPEED_8_0GT,               /* 3 */
564         PCI_SPEED_UNKNOWN,              /* 4 */
565         PCI_SPEED_UNKNOWN,              /* 5 */
566         PCI_SPEED_UNKNOWN,              /* 6 */
567         PCI_SPEED_UNKNOWN,              /* 7 */
568         PCI_SPEED_UNKNOWN,              /* 8 */
569         PCI_SPEED_UNKNOWN,              /* 9 */
570         PCI_SPEED_UNKNOWN,              /* A */
571         PCI_SPEED_UNKNOWN,              /* B */
572         PCI_SPEED_UNKNOWN,              /* C */
573         PCI_SPEED_UNKNOWN,              /* D */
574         PCI_SPEED_UNKNOWN,              /* E */
575         PCI_SPEED_UNKNOWN               /* F */
576 };
577
578 void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
579 {
580         bus->cur_bus_speed = pcie_link_speed[linksta & PCI_EXP_LNKSTA_CLS];
581 }
582 EXPORT_SYMBOL_GPL(pcie_update_link_speed);
583
584 static unsigned char agp_speeds[] = {
585         AGP_UNKNOWN,
586         AGP_1X,
587         AGP_2X,
588         AGP_4X,
589         AGP_8X
590 };
591
592 static enum pci_bus_speed agp_speed(int agp3, int agpstat)
593 {
594         int index = 0;
595
596         if (agpstat & 4)
597                 index = 3;
598         else if (agpstat & 2)
599                 index = 2;
600         else if (agpstat & 1)
601                 index = 1;
602         else
603                 goto out;
604
605         if (agp3) {
606                 index += 2;
607                 if (index == 5)
608                         index = 0;
609         }
610
611  out:
612         return agp_speeds[index];
613 }
614
615 static void pci_set_bus_speed(struct pci_bus *bus)
616 {
617         struct pci_dev *bridge = bus->self;
618         int pos;
619
620         pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
621         if (!pos)
622                 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
623         if (pos) {
624                 u32 agpstat, agpcmd;
625
626                 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
627                 bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
628
629                 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
630                 bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
631         }
632
633         pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
634         if (pos) {
635                 u16 status;
636                 enum pci_bus_speed max;
637
638                 pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS,
639                                      &status);
640
641                 if (status & PCI_X_SSTATUS_533MHZ) {
642                         max = PCI_SPEED_133MHz_PCIX_533;
643                 } else if (status & PCI_X_SSTATUS_266MHZ) {
644                         max = PCI_SPEED_133MHz_PCIX_266;
645                 } else if (status & PCI_X_SSTATUS_133MHZ) {
646                         if ((status & PCI_X_SSTATUS_VERS) == PCI_X_SSTATUS_V2)
647                                 max = PCI_SPEED_133MHz_PCIX_ECC;
648                         else
649                                 max = PCI_SPEED_133MHz_PCIX;
650                 } else {
651                         max = PCI_SPEED_66MHz_PCIX;
652                 }
653
654                 bus->max_bus_speed = max;
655                 bus->cur_bus_speed = pcix_bus_speed[
656                         (status & PCI_X_SSTATUS_FREQ) >> 6];
657
658                 return;
659         }
660
661         if (pci_is_pcie(bridge)) {
662                 u32 linkcap;
663                 u16 linksta;
664
665                 pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap);
666                 bus->max_bus_speed = pcie_link_speed[linkcap & PCI_EXP_LNKCAP_SLS];
667
668                 pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta);
669                 pcie_update_link_speed(bus, linksta);
670         }
671 }
672
673 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
674                                            struct pci_dev *bridge, int busnr)
675 {
676         struct pci_bus *child;
677         int i;
678         int ret;
679
680         /*
681          * Allocate a new bus, and inherit stuff from the parent..
682          */
683         child = pci_alloc_bus(parent);
684         if (!child)
685                 return NULL;
686
687         child->parent = parent;
688         child->ops = parent->ops;
689         child->msi = parent->msi;
690         child->sysdata = parent->sysdata;
691         child->bus_flags = parent->bus_flags;
692
693         /* initialize some portions of the bus device, but don't register it
694          * now as the parent is not properly set up yet.
695          */
696         child->dev.class = &pcibus_class;
697         dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
698
699         /*
700          * Set up the primary, secondary and subordinate
701          * bus numbers.
702          */
703         child->number = child->busn_res.start = busnr;
704         child->primary = parent->busn_res.start;
705         child->busn_res.end = 0xff;
706
707         if (!bridge) {
708                 child->dev.parent = parent->bridge;
709                 goto add_dev;
710         }
711
712         child->self = bridge;
713         child->bridge = get_device(&bridge->dev);
714         child->dev.parent = child->bridge;
715         pci_set_bus_of_node(child);
716         pci_set_bus_speed(child);
717
718         /* Set up default resource pointers and names.. */
719         for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
720                 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
721                 child->resource[i]->name = child->name;
722         }
723         bridge->subordinate = child;
724
725 add_dev:
726         ret = device_register(&child->dev);
727         WARN_ON(ret < 0);
728
729         pcibios_add_bus(child);
730
731         /* Create legacy_io and legacy_mem files for this bus */
732         pci_create_legacy_files(child);
733
734         return child;
735 }
736
737 struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
738                                 int busnr)
739 {
740         struct pci_bus *child;
741
742         child = pci_alloc_child_bus(parent, dev, busnr);
743         if (child) {
744                 down_write(&pci_bus_sem);
745                 list_add_tail(&child->node, &parent->children);
746                 up_write(&pci_bus_sem);
747         }
748         return child;
749 }
750 EXPORT_SYMBOL(pci_add_new_bus);
751
752 static void pci_enable_crs(struct pci_dev *pdev)
753 {
754         u16 root_cap = 0;
755
756         /* Enable CRS Software Visibility if supported */
757         pcie_capability_read_word(pdev, PCI_EXP_RTCAP, &root_cap);
758         if (root_cap & PCI_EXP_RTCAP_CRSVIS)
759                 pcie_capability_set_word(pdev, PCI_EXP_RTCTL,
760                                          PCI_EXP_RTCTL_CRSSVE);
761 }
762
763 /*
764  * If it's a bridge, configure it and scan the bus behind it.
765  * For CardBus bridges, we don't scan behind as the devices will
766  * be handled by the bridge driver itself.
767  *
768  * We need to process bridges in two passes -- first we scan those
769  * already configured by the BIOS and after we are done with all of
770  * them, we proceed to assigning numbers to the remaining buses in
771  * order to avoid overlaps between old and new bus numbers.
772  */
773 int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
774 {
775         struct pci_bus *child;
776         int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
777         u32 buses, i, j = 0;
778         u16 bctl;
779         u8 primary, secondary, subordinate;
780         int broken = 0;
781
782         pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
783         primary = buses & 0xFF;
784         secondary = (buses >> 8) & 0xFF;
785         subordinate = (buses >> 16) & 0xFF;
786
787         dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
788                 secondary, subordinate, pass);
789
790         if (!primary && (primary != bus->number) && secondary && subordinate) {
791                 dev_warn(&dev->dev, "Primary bus is hard wired to 0\n");
792                 primary = bus->number;
793         }
794
795         /* Check if setup is sensible at all */
796         if (!pass &&
797             (primary != bus->number || secondary <= bus->number ||
798              secondary > subordinate)) {
799                 dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
800                          secondary, subordinate);
801                 broken = 1;
802         }
803
804         /* Disable MasterAbortMode during probing to avoid reporting
805            of bus errors (in some architectures) */
806         pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
807         pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
808                               bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
809
810         pci_enable_crs(dev);
811
812         if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
813             !is_cardbus && !broken) {
814                 unsigned int cmax;
815                 /*
816                  * Bus already configured by firmware, process it in the first
817                  * pass and just note the configuration.
818                  */
819                 if (pass)
820                         goto out;
821
822                 /*
823                  * The bus might already exist for two reasons: Either we are
824                  * rescanning the bus or the bus is reachable through more than
825                  * one bridge. The second case can happen with the i450NX
826                  * chipset.
827                  */
828                 child = pci_find_bus(pci_domain_nr(bus), secondary);
829                 if (!child) {
830                         child = pci_add_new_bus(bus, dev, secondary);
831                         if (!child)
832                                 goto out;
833                         child->primary = primary;
834                         pci_bus_insert_busn_res(child, secondary, subordinate);
835                         child->bridge_ctl = bctl;
836                 }
837
838                 cmax = pci_scan_child_bus(child);
839                 if (cmax > subordinate)
840                         dev_warn(&dev->dev, "bridge has subordinate %02x but max busn %02x\n",
841                                  subordinate, cmax);
842                 /* subordinate should equal child->busn_res.end */
843                 if (subordinate > max)
844                         max = subordinate;
845         } else {
846                 /*
847                  * We need to assign a number to this bus which we always
848                  * do in the second pass.
849                  */
850                 if (!pass) {
851                         if (pcibios_assign_all_busses() || broken || is_cardbus)
852                                 /* Temporarily disable forwarding of the
853                                    configuration cycles on all bridges in
854                                    this bus segment to avoid possible
855                                    conflicts in the second pass between two
856                                    bridges programmed with overlapping
857                                    bus ranges. */
858                                 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
859                                                        buses & ~0xffffff);
860                         goto out;
861                 }
862
863                 /* Clear errors */
864                 pci_write_config_word(dev, PCI_STATUS, 0xffff);
865
866                 /* Prevent assigning a bus number that already exists.
867                  * This can happen when a bridge is hot-plugged, so in
868                  * this case we only re-scan this bus. */
869                 child = pci_find_bus(pci_domain_nr(bus), max+1);
870                 if (!child) {
871                         child = pci_add_new_bus(bus, dev, max+1);
872                         if (!child)
873                                 goto out;
874                         pci_bus_insert_busn_res(child, max+1, 0xff);
875                 }
876                 max++;
877                 buses = (buses & 0xff000000)
878                       | ((unsigned int)(child->primary)     <<  0)
879                       | ((unsigned int)(child->busn_res.start)   <<  8)
880                       | ((unsigned int)(child->busn_res.end) << 16);
881
882                 /*
883                  * yenta.c forces a secondary latency timer of 176.
884                  * Copy that behaviour here.
885                  */
886                 if (is_cardbus) {
887                         buses &= ~0xff000000;
888                         buses |= CARDBUS_LATENCY_TIMER << 24;
889                 }
890
891                 /*
892                  * We need to blast all three values with a single write.
893                  */
894                 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
895
896                 if (!is_cardbus) {
897                         child->bridge_ctl = bctl;
898                         max = pci_scan_child_bus(child);
899                 } else {
900                         /*
901                          * For CardBus bridges, we leave 4 bus numbers
902                          * as cards with a PCI-to-PCI bridge can be
903                          * inserted later.
904                          */
905                         for (i = 0; i < CARDBUS_RESERVE_BUSNR; i++) {
906                                 struct pci_bus *parent = bus;
907                                 if (pci_find_bus(pci_domain_nr(bus),
908                                                         max+i+1))
909                                         break;
910                                 while (parent->parent) {
911                                         if ((!pcibios_assign_all_busses()) &&
912                                             (parent->busn_res.end > max) &&
913                                             (parent->busn_res.end <= max+i)) {
914                                                 j = 1;
915                                         }
916                                         parent = parent->parent;
917                                 }
918                                 if (j) {
919                                         /*
920                                          * Often, there are two cardbus bridges
921                                          * -- try to leave one valid bus number
922                                          * for each one.
923                                          */
924                                         i /= 2;
925                                         break;
926                                 }
927                         }
928                         max += i;
929                 }
930                 /*
931                  * Set the subordinate bus number to its real value.
932                  */
933                 pci_bus_update_busn_res_end(child, max);
934                 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
935         }
936
937         sprintf(child->name,
938                 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
939                 pci_domain_nr(bus), child->number);
940
941         /* Has only triggered on CardBus, fixup is in yenta_socket */
942         while (bus->parent) {
943                 if ((child->busn_res.end > bus->busn_res.end) ||
944                     (child->number > bus->busn_res.end) ||
945                     (child->number < bus->number) ||
946                     (child->busn_res.end < bus->number)) {
947                         dev_info(&child->dev, "%pR %s hidden behind%s bridge %s %pR\n",
948                                 &child->busn_res,
949                                 (bus->number > child->busn_res.end &&
950                                  bus->busn_res.end < child->number) ?
951                                         "wholly" : "partially",
952                                 bus->self->transparent ? " transparent" : "",
953                                 dev_name(&bus->dev),
954                                 &bus->busn_res);
955                 }
956                 bus = bus->parent;
957         }
958
959 out:
960         pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
961
962         return max;
963 }
964 EXPORT_SYMBOL(pci_scan_bridge);
965
966 /*
967  * Read interrupt line and base address registers.
968  * The architecture-dependent code can tweak these, of course.
969  */
970 static void pci_read_irq(struct pci_dev *dev)
971 {
972         unsigned char irq;
973
974         pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
975         dev->pin = irq;
976         if (irq)
977                 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
978         dev->irq = irq;
979 }
980
981 void set_pcie_port_type(struct pci_dev *pdev)
982 {
983         int pos;
984         u16 reg16;
985
986         pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
987         if (!pos)
988                 return;
989         pdev->pcie_cap = pos;
990         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
991         pdev->pcie_flags_reg = reg16;
992         pci_read_config_word(pdev, pos + PCI_EXP_DEVCAP, &reg16);
993         pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
994 }
995
996 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
997 {
998         u32 reg32;
999
1000         pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32);
1001         if (reg32 & PCI_EXP_SLTCAP_HPC)
1002                 pdev->is_hotplug_bridge = 1;
1003 }
1004
1005 /**
1006  * pci_ext_cfg_is_aliased - is ext config space just an alias of std config?
1007  * @dev: PCI device
1008  *
1009  * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 says that
1010  * when forwarding a type1 configuration request the bridge must check that
1011  * the extended register address field is zero.  The bridge is not permitted
1012  * to forward the transactions and must handle it as an Unsupported Request.
1013  * Some bridges do not follow this rule and simply drop the extended register
1014  * bits, resulting in the standard config space being aliased, every 256
1015  * bytes across the entire configuration space.  Test for this condition by
1016  * comparing the first dword of each potential alias to the vendor/device ID.
1017  * Known offenders:
1018  *   ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01 & 03)
1019  *   AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40)
1020  */
1021 static bool pci_ext_cfg_is_aliased(struct pci_dev *dev)
1022 {
1023 #ifdef CONFIG_PCI_QUIRKS
1024         int pos;
1025         u32 header, tmp;
1026
1027         pci_read_config_dword(dev, PCI_VENDOR_ID, &header);
1028
1029         for (pos = PCI_CFG_SPACE_SIZE;
1030              pos < PCI_CFG_SPACE_EXP_SIZE; pos += PCI_CFG_SPACE_SIZE) {
1031                 if (pci_read_config_dword(dev, pos, &tmp) != PCIBIOS_SUCCESSFUL
1032                     || header != tmp)
1033                         return false;
1034         }
1035
1036         return true;
1037 #else
1038         return false;
1039 #endif
1040 }
1041
1042 /**
1043  * pci_cfg_space_size - get the configuration space size of the PCI device.
1044  * @dev: PCI device
1045  *
1046  * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1047  * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
1048  * access it.  Maybe we don't have a way to generate extended config space
1049  * accesses, or the device is behind a reverse Express bridge.  So we try
1050  * reading the dword at 0x100 which must either be 0 or a valid extended
1051  * capability header.
1052  */
1053 static int pci_cfg_space_size_ext(struct pci_dev *dev)
1054 {
1055         u32 status;
1056         int pos = PCI_CFG_SPACE_SIZE;
1057
1058         if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1059                 goto fail;
1060         if (status == 0xffffffff || pci_ext_cfg_is_aliased(dev))
1061                 goto fail;
1062
1063         return PCI_CFG_SPACE_EXP_SIZE;
1064
1065  fail:
1066         return PCI_CFG_SPACE_SIZE;
1067 }
1068
1069 int pci_cfg_space_size(struct pci_dev *dev)
1070 {
1071         int pos;
1072         u32 status;
1073         u16 class;
1074
1075         class = dev->class >> 8;
1076         if (class == PCI_CLASS_BRIDGE_HOST)
1077                 return pci_cfg_space_size_ext(dev);
1078
1079         if (!pci_is_pcie(dev)) {
1080                 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1081                 if (!pos)
1082                         goto fail;
1083
1084                 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1085                 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1086                         goto fail;
1087         }
1088
1089         return pci_cfg_space_size_ext(dev);
1090
1091  fail:
1092         return PCI_CFG_SPACE_SIZE;
1093 }
1094
1095 #define LEGACY_IO_RESOURCE      (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
1096
1097 /**
1098  * pci_setup_device - fill in class and map information of a device
1099  * @dev: the device structure to fill
1100  *
1101  * Initialize the device structure with information about the device's
1102  * vendor,class,memory and IO-space addresses,IRQ lines etc.
1103  * Called at initialisation of the PCI subsystem and by CardBus services.
1104  * Returns 0 on success and negative if unknown type of device (not normal,
1105  * bridge or CardBus).
1106  */
1107 int pci_setup_device(struct pci_dev *dev)
1108 {
1109         u32 class;
1110         u8 hdr_type;
1111         struct pci_slot *slot;
1112         int pos = 0;
1113         struct pci_bus_region region;
1114         struct resource *res;
1115
1116         if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
1117                 return -EIO;
1118
1119         dev->sysdata = dev->bus->sysdata;
1120         dev->dev.parent = dev->bus->bridge;
1121         dev->dev.bus = &pci_bus_type;
1122         dev->hdr_type = hdr_type & 0x7f;
1123         dev->multifunction = !!(hdr_type & 0x80);
1124         dev->error_state = pci_channel_io_normal;
1125         set_pcie_port_type(dev);
1126
1127         list_for_each_entry(slot, &dev->bus->slots, list)
1128                 if (PCI_SLOT(dev->devfn) == slot->number)
1129                         dev->slot = slot;
1130
1131         /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
1132            set this higher, assuming the system even supports it.  */
1133         dev->dma_mask = 0xffffffff;
1134
1135         dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
1136                      dev->bus->number, PCI_SLOT(dev->devfn),
1137                      PCI_FUNC(dev->devfn));
1138
1139         pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
1140         dev->revision = class & 0xff;
1141         dev->class = class >> 8;                    /* upper 3 bytes */
1142
1143         dev_printk(KERN_DEBUG, &dev->dev, "[%04x:%04x] type %02x class %#08x\n",
1144                    dev->vendor, dev->device, dev->hdr_type, dev->class);
1145
1146         /* need to have dev->class ready */
1147         dev->cfg_size = pci_cfg_space_size(dev);
1148
1149         /* "Unknown power state" */
1150         dev->current_state = PCI_UNKNOWN;
1151
1152         /* Early fixups, before probing the BARs */
1153         pci_fixup_device(pci_fixup_early, dev);
1154         /* device class may be changed after fixup */
1155         class = dev->class >> 8;
1156
1157         switch (dev->hdr_type) {                    /* header type */
1158         case PCI_HEADER_TYPE_NORMAL:                /* standard header */
1159                 if (class == PCI_CLASS_BRIDGE_PCI)
1160                         goto bad;
1161                 pci_read_irq(dev);
1162                 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
1163                 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1164                 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
1165
1166                 /*
1167                  * Do the ugly legacy mode stuff here rather than broken chip
1168                  * quirk code. Legacy mode ATA controllers have fixed
1169                  * addresses. These are not always echoed in BAR0-3, and
1170                  * BAR0-3 in a few cases contain junk!
1171                  */
1172                 if (class == PCI_CLASS_STORAGE_IDE) {
1173                         u8 progif;
1174                         pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
1175                         if ((progif & 1) == 0) {
1176                                 region.start = 0x1F0;
1177                                 region.end = 0x1F7;
1178                                 res = &dev->resource[0];
1179                                 res->flags = LEGACY_IO_RESOURCE;
1180                                 pcibios_bus_to_resource(dev->bus, res, &region);
1181                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x10: %pR\n",
1182                                          res);
1183                                 region.start = 0x3F6;
1184                                 region.end = 0x3F6;
1185                                 res = &dev->resource[1];
1186                                 res->flags = LEGACY_IO_RESOURCE;
1187                                 pcibios_bus_to_resource(dev->bus, res, &region);
1188                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x14: %pR\n",
1189                                          res);
1190                         }
1191                         if ((progif & 4) == 0) {
1192                                 region.start = 0x170;
1193                                 region.end = 0x177;
1194                                 res = &dev->resource[2];
1195                                 res->flags = LEGACY_IO_RESOURCE;
1196                                 pcibios_bus_to_resource(dev->bus, res, &region);
1197                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x18: %pR\n",
1198                                          res);
1199                                 region.start = 0x376;
1200                                 region.end = 0x376;
1201                                 res = &dev->resource[3];
1202                                 res->flags = LEGACY_IO_RESOURCE;
1203                                 pcibios_bus_to_resource(dev->bus, res, &region);
1204                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x1c: %pR\n",
1205                                          res);
1206                         }
1207                 }
1208                 break;
1209
1210         case PCI_HEADER_TYPE_BRIDGE:                /* bridge header */
1211                 if (class != PCI_CLASS_BRIDGE_PCI)
1212                         goto bad;
1213                 /* The PCI-to-PCI bridge spec requires that subtractive
1214                    decoding (i.e. transparent) bridge must have programming
1215                    interface code of 0x01. */
1216                 pci_read_irq(dev);
1217                 dev->transparent = ((dev->class & 0xff) == 1);
1218                 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
1219                 set_pcie_hotplug_bridge(dev);
1220                 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
1221                 if (pos) {
1222                         pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
1223                         pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
1224                 }
1225                 break;
1226
1227         case PCI_HEADER_TYPE_CARDBUS:               /* CardBus bridge header */
1228                 if (class != PCI_CLASS_BRIDGE_CARDBUS)
1229                         goto bad;
1230                 pci_read_irq(dev);
1231                 pci_read_bases(dev, 1, 0);
1232                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1233                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
1234                 break;
1235
1236         default:                                    /* unknown header */
1237                 dev_err(&dev->dev, "unknown header type %02x, ignoring device\n",
1238                         dev->hdr_type);
1239                 return -EIO;
1240
1241         bad:
1242                 dev_err(&dev->dev, "ignoring class %#08x (doesn't match header type %02x)\n",
1243                         dev->class, dev->hdr_type);
1244                 dev->class = PCI_CLASS_NOT_DEFINED;
1245         }
1246
1247         /* We found a fine healthy device, go go go... */
1248         return 0;
1249 }
1250
1251 static struct hpp_type0 pci_default_type0 = {
1252         .revision = 1,
1253         .cache_line_size = 8,
1254         .latency_timer = 0x40,
1255         .enable_serr = 0,
1256         .enable_perr = 0,
1257 };
1258
1259 static void program_hpp_type0(struct pci_dev *dev, struct hpp_type0 *hpp)
1260 {
1261         u16 pci_cmd, pci_bctl;
1262
1263         if (!hpp)
1264                 hpp = &pci_default_type0;
1265
1266         if (hpp->revision > 1) {
1267                 dev_warn(&dev->dev,
1268                          "PCI settings rev %d not supported; using defaults\n",
1269                          hpp->revision);
1270                 hpp = &pci_default_type0;
1271         }
1272
1273         pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, hpp->cache_line_size);
1274         pci_write_config_byte(dev, PCI_LATENCY_TIMER, hpp->latency_timer);
1275         pci_read_config_word(dev, PCI_COMMAND, &pci_cmd);
1276         if (hpp->enable_serr)
1277                 pci_cmd |= PCI_COMMAND_SERR;
1278         if (hpp->enable_perr)
1279                 pci_cmd |= PCI_COMMAND_PARITY;
1280         pci_write_config_word(dev, PCI_COMMAND, pci_cmd);
1281
1282         /* Program bridge control value */
1283         if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
1284                 pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER,
1285                                       hpp->latency_timer);
1286                 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &pci_bctl);
1287                 if (hpp->enable_serr)
1288                         pci_bctl |= PCI_BRIDGE_CTL_SERR;
1289                 if (hpp->enable_perr)
1290                         pci_bctl |= PCI_BRIDGE_CTL_PARITY;
1291                 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, pci_bctl);
1292         }
1293 }
1294
1295 static void program_hpp_type1(struct pci_dev *dev, struct hpp_type1 *hpp)
1296 {
1297         if (hpp)
1298                 dev_warn(&dev->dev, "PCI-X settings not supported\n");
1299 }
1300
1301 static void program_hpp_type2(struct pci_dev *dev, struct hpp_type2 *hpp)
1302 {
1303         int pos;
1304         u32 reg32;
1305
1306         if (!hpp)
1307                 return;
1308
1309         if (hpp->revision > 1) {
1310                 dev_warn(&dev->dev, "PCIe settings rev %d not supported\n",
1311                          hpp->revision);
1312                 return;
1313         }
1314
1315         /*
1316          * Don't allow _HPX to change MPS or MRRS settings.  We manage
1317          * those to make sure they're consistent with the rest of the
1318          * platform.
1319          */
1320         hpp->pci_exp_devctl_and |= PCI_EXP_DEVCTL_PAYLOAD |
1321                                     PCI_EXP_DEVCTL_READRQ;
1322         hpp->pci_exp_devctl_or &= ~(PCI_EXP_DEVCTL_PAYLOAD |
1323                                     PCI_EXP_DEVCTL_READRQ);
1324
1325         /* Initialize Device Control Register */
1326         pcie_capability_clear_and_set_word(dev, PCI_EXP_DEVCTL,
1327                         ~hpp->pci_exp_devctl_and, hpp->pci_exp_devctl_or);
1328
1329         /* Initialize Link Control Register */
1330         if (pcie_cap_has_lnkctl(dev))
1331                 pcie_capability_clear_and_set_word(dev, PCI_EXP_LNKCTL,
1332                         ~hpp->pci_exp_lnkctl_and, hpp->pci_exp_lnkctl_or);
1333
1334         /* Find Advanced Error Reporting Enhanced Capability */
1335         pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
1336         if (!pos)
1337                 return;
1338
1339         /* Initialize Uncorrectable Error Mask Register */
1340         pci_read_config_dword(dev, pos + PCI_ERR_UNCOR_MASK, &reg32);
1341         reg32 = (reg32 & hpp->unc_err_mask_and) | hpp->unc_err_mask_or;
1342         pci_write_config_dword(dev, pos + PCI_ERR_UNCOR_MASK, reg32);
1343
1344         /* Initialize Uncorrectable Error Severity Register */
1345         pci_read_config_dword(dev, pos + PCI_ERR_UNCOR_SEVER, &reg32);
1346         reg32 = (reg32 & hpp->unc_err_sever_and) | hpp->unc_err_sever_or;
1347         pci_write_config_dword(dev, pos + PCI_ERR_UNCOR_SEVER, reg32);
1348
1349         /* Initialize Correctable Error Mask Register */
1350         pci_read_config_dword(dev, pos + PCI_ERR_COR_MASK, &reg32);
1351         reg32 = (reg32 & hpp->cor_err_mask_and) | hpp->cor_err_mask_or;
1352         pci_write_config_dword(dev, pos + PCI_ERR_COR_MASK, reg32);
1353
1354         /* Initialize Advanced Error Capabilities and Control Register */
1355         pci_read_config_dword(dev, pos + PCI_ERR_CAP, &reg32);
1356         reg32 = (reg32 & hpp->adv_err_cap_and) | hpp->adv_err_cap_or;
1357         pci_write_config_dword(dev, pos + PCI_ERR_CAP, reg32);
1358
1359         /*
1360          * FIXME: The following two registers are not supported yet.
1361          *
1362          *   o Secondary Uncorrectable Error Severity Register
1363          *   o Secondary Uncorrectable Error Mask Register
1364          */
1365 }
1366
1367 static void pci_configure_device(struct pci_dev *dev)
1368 {
1369         struct hotplug_params hpp;
1370         int ret;
1371
1372         memset(&hpp, 0, sizeof(hpp));
1373         ret = pci_get_hp_params(dev, &hpp);
1374         if (ret)
1375                 return;
1376
1377         program_hpp_type2(dev, hpp.t2);
1378         program_hpp_type1(dev, hpp.t1);
1379         program_hpp_type0(dev, hpp.t0);
1380 }
1381
1382 static void pci_release_capabilities(struct pci_dev *dev)
1383 {
1384         pci_vpd_release(dev);
1385         pci_iov_release(dev);
1386         pci_free_cap_save_buffers(dev);
1387 }
1388
1389 /**
1390  * pci_release_dev - free a pci device structure when all users of it are finished.
1391  * @dev: device that's been disconnected
1392  *
1393  * Will be called only by the device core when all users of this pci device are
1394  * done.
1395  */
1396 static void pci_release_dev(struct device *dev)
1397 {
1398         struct pci_dev *pci_dev;
1399
1400         pci_dev = to_pci_dev(dev);
1401         pci_release_capabilities(pci_dev);
1402         pci_release_of_node(pci_dev);
1403         pcibios_release_device(pci_dev);
1404         pci_bus_put(pci_dev->bus);
1405         kfree(pci_dev->driver_override);
1406         kfree(pci_dev);
1407 }
1408
1409 struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
1410 {
1411         struct pci_dev *dev;
1412
1413         dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1414         if (!dev)
1415                 return NULL;
1416
1417         INIT_LIST_HEAD(&dev->bus_list);
1418         dev->dev.type = &pci_dev_type;
1419         dev->bus = pci_bus_get(bus);
1420
1421         return dev;
1422 }
1423 EXPORT_SYMBOL(pci_alloc_dev);
1424
1425 bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
1426                                 int crs_timeout)
1427 {
1428         int delay = 1;
1429
1430         if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1431                 return false;
1432
1433         /* some broken boards return 0 or ~0 if a slot is empty: */
1434         if (*l == 0xffffffff || *l == 0x00000000 ||
1435             *l == 0x0000ffff || *l == 0xffff0000)
1436                 return false;
1437
1438         /*
1439          * Configuration Request Retry Status.  Some root ports return the
1440          * actual device ID instead of the synthetic ID (0xFFFF) required
1441          * by the PCIe spec.  Ignore the device ID and only check for
1442          * (vendor id == 1).
1443          */
1444         while ((*l & 0xffff) == 0x0001) {
1445                 if (!crs_timeout)
1446                         return false;
1447
1448                 msleep(delay);
1449                 delay *= 2;
1450                 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1451                         return false;
1452                 /* Card hasn't responded in 60 seconds?  Must be stuck. */
1453                 if (delay > crs_timeout) {
1454                         printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not responding\n",
1455                                pci_domain_nr(bus), bus->number, PCI_SLOT(devfn),
1456                                PCI_FUNC(devfn));
1457                         return false;
1458                 }
1459         }
1460
1461         return true;
1462 }
1463 EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
1464
1465 /*
1466  * Read the config data for a PCI device, sanity-check it
1467  * and fill in the dev structure...
1468  */
1469 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1470 {
1471         struct pci_dev *dev;
1472         u32 l;
1473
1474         if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000))
1475                 return NULL;
1476
1477         dev = pci_alloc_dev(bus);
1478         if (!dev)
1479                 return NULL;
1480
1481         dev->devfn = devfn;
1482         dev->vendor = l & 0xffff;
1483         dev->device = (l >> 16) & 0xffff;
1484
1485         pci_set_of_node(dev);
1486
1487         if (pci_setup_device(dev)) {
1488                 pci_bus_put(dev->bus);
1489                 kfree(dev);
1490                 return NULL;
1491         }
1492
1493         return dev;
1494 }
1495
1496 static void pci_init_capabilities(struct pci_dev *dev)
1497 {
1498         /* MSI/MSI-X list */
1499         pci_msi_init_pci_dev(dev);
1500
1501         /* Buffers for saving PCIe and PCI-X capabilities */
1502         pci_allocate_cap_save_buffers(dev);
1503
1504         /* Power Management */
1505         pci_pm_init(dev);
1506
1507         /* Vital Product Data */
1508         pci_vpd_pci22_init(dev);
1509
1510         /* Alternative Routing-ID Forwarding */
1511         pci_configure_ari(dev);
1512
1513         /* Single Root I/O Virtualization */
1514         pci_iov_init(dev);
1515
1516         /* Enable ACS P2P upstream forwarding */
1517         pci_enable_acs(dev);
1518 }
1519
1520 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1521 {
1522         int ret;
1523
1524         pci_configure_device(dev);
1525
1526         device_initialize(&dev->dev);
1527         dev->dev.release = pci_release_dev;
1528
1529         set_dev_node(&dev->dev, pcibus_to_node(bus));
1530         dev->dev.dma_mask = &dev->dma_mask;
1531         dev->dev.dma_parms = &dev->dma_parms;
1532         dev->dev.coherent_dma_mask = 0xffffffffull;
1533
1534         pci_set_dma_max_seg_size(dev, 65536);
1535         pci_set_dma_seg_boundary(dev, 0xffffffff);
1536
1537         /* Fix up broken headers */
1538         pci_fixup_device(pci_fixup_header, dev);
1539
1540         /* moved out from quirk header fixup code */
1541         pci_reassigndev_resource_alignment(dev);
1542
1543         /* Clear the state_saved flag. */
1544         dev->state_saved = false;
1545
1546         /* Initialize various capabilities */
1547         pci_init_capabilities(dev);
1548
1549         /*
1550          * Add the device to our list of discovered devices
1551          * and the bus list for fixup functions, etc.
1552          */
1553         down_write(&pci_bus_sem);
1554         list_add_tail(&dev->bus_list, &bus->devices);
1555         up_write(&pci_bus_sem);
1556
1557         ret = pcibios_add_device(dev);
1558         WARN_ON(ret < 0);
1559
1560         /* Notifier could use PCI capabilities */
1561         dev->match_driver = false;
1562         ret = device_add(&dev->dev);
1563         WARN_ON(ret < 0);
1564 }
1565
1566 struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn)
1567 {
1568         struct pci_dev *dev;
1569
1570         dev = pci_get_slot(bus, devfn);
1571         if (dev) {
1572                 pci_dev_put(dev);
1573                 return dev;
1574         }
1575
1576         dev = pci_scan_device(bus, devfn);
1577         if (!dev)
1578                 return NULL;
1579
1580         pci_device_add(dev, bus);
1581
1582         return dev;
1583 }
1584 EXPORT_SYMBOL(pci_scan_single_device);
1585
1586 static unsigned next_fn(struct pci_bus *bus, struct pci_dev *dev, unsigned fn)
1587 {
1588         int pos;
1589         u16 cap = 0;
1590         unsigned next_fn;
1591
1592         if (pci_ari_enabled(bus)) {
1593                 if (!dev)
1594                         return 0;
1595                 pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1596                 if (!pos)
1597                         return 0;
1598
1599                 pci_read_config_word(dev, pos + PCI_ARI_CAP, &cap);
1600                 next_fn = PCI_ARI_CAP_NFN(cap);
1601                 if (next_fn <= fn)
1602                         return 0;       /* protect against malformed list */
1603
1604                 return next_fn;
1605         }
1606
1607         /* dev may be NULL for non-contiguous multifunction devices */
1608         if (!dev || dev->multifunction)
1609                 return (fn + 1) % 8;
1610
1611         return 0;
1612 }
1613
1614 static int only_one_child(struct pci_bus *bus)
1615 {
1616         struct pci_dev *parent = bus->self;
1617
1618         if (!parent || !pci_is_pcie(parent))
1619                 return 0;
1620         if (pci_pcie_type(parent) == PCI_EXP_TYPE_ROOT_PORT)
1621                 return 1;
1622         if (pci_pcie_type(parent) == PCI_EXP_TYPE_DOWNSTREAM &&
1623             !pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS))
1624                 return 1;
1625         return 0;
1626 }
1627
1628 /**
1629  * pci_scan_slot - scan a PCI slot on a bus for devices.
1630  * @bus: PCI bus to scan
1631  * @devfn: slot number to scan (must have zero function.)
1632  *
1633  * Scan a PCI slot on the specified PCI bus for devices, adding
1634  * discovered devices to the @bus->devices list.  New devices
1635  * will not have is_added set.
1636  *
1637  * Returns the number of new devices found.
1638  */
1639 int pci_scan_slot(struct pci_bus *bus, int devfn)
1640 {
1641         unsigned fn, nr = 0;
1642         struct pci_dev *dev;
1643
1644         if (only_one_child(bus) && (devfn > 0))
1645                 return 0; /* Already scanned the entire slot */
1646
1647         dev = pci_scan_single_device(bus, devfn);
1648         if (!dev)
1649                 return 0;
1650         if (!dev->is_added)
1651                 nr++;
1652
1653         for (fn = next_fn(bus, dev, 0); fn > 0; fn = next_fn(bus, dev, fn)) {
1654                 dev = pci_scan_single_device(bus, devfn + fn);
1655                 if (dev) {
1656                         if (!dev->is_added)
1657                                 nr++;
1658                         dev->multifunction = 1;
1659                 }
1660         }
1661
1662         /* only one slot has pcie device */
1663         if (bus->self && nr)
1664                 pcie_aspm_init_link_state(bus->self);
1665
1666         return nr;
1667 }
1668 EXPORT_SYMBOL(pci_scan_slot);
1669
1670 static int pcie_find_smpss(struct pci_dev *dev, void *data)
1671 {
1672         u8 *smpss = data;
1673
1674         if (!pci_is_pcie(dev))
1675                 return 0;
1676
1677         /*
1678          * We don't have a way to change MPS settings on devices that have
1679          * drivers attached.  A hot-added device might support only the minimum
1680          * MPS setting (MPS=128).  Therefore, if the fabric contains a bridge
1681          * where devices may be hot-added, we limit the fabric MPS to 128 so
1682          * hot-added devices will work correctly.
1683          *
1684          * However, if we hot-add a device to a slot directly below a Root
1685          * Port, it's impossible for there to be other existing devices below
1686          * the port.  We don't limit the MPS in this case because we can
1687          * reconfigure MPS on both the Root Port and the hot-added device,
1688          * and there are no other devices involved.
1689          *
1690          * Note that this PCIE_BUS_SAFE path assumes no peer-to-peer DMA.
1691          */
1692         if (dev->is_hotplug_bridge &&
1693             pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT)
1694                 *smpss = 0;
1695
1696         if (*smpss > dev->pcie_mpss)
1697                 *smpss = dev->pcie_mpss;
1698
1699         return 0;
1700 }
1701
1702 static void pcie_write_mps(struct pci_dev *dev, int mps)
1703 {
1704         int rc;
1705
1706         if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
1707                 mps = 128 << dev->pcie_mpss;
1708
1709                 if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT &&
1710                     dev->bus->self)
1711                         /* For "Performance", the assumption is made that
1712                          * downstream communication will never be larger than
1713                          * the MRRS.  So, the MPS only needs to be configured
1714                          * for the upstream communication.  This being the case,
1715                          * walk from the top down and set the MPS of the child
1716                          * to that of the parent bus.
1717                          *
1718                          * Configure the device MPS with the smaller of the
1719                          * device MPSS or the bridge MPS (which is assumed to be
1720                          * properly configured at this point to the largest
1721                          * allowable MPS based on its parent bus).
1722                          */
1723                         mps = min(mps, pcie_get_mps(dev->bus->self));
1724         }
1725
1726         rc = pcie_set_mps(dev, mps);
1727         if (rc)
1728                 dev_err(&dev->dev, "Failed attempting to set the MPS\n");
1729 }
1730
1731 static void pcie_write_mrrs(struct pci_dev *dev)
1732 {
1733         int rc, mrrs;
1734
1735         /* In the "safe" case, do not configure the MRRS.  There appear to be
1736          * issues with setting MRRS to 0 on a number of devices.
1737          */
1738         if (pcie_bus_config != PCIE_BUS_PERFORMANCE)
1739                 return;
1740
1741         /* For Max performance, the MRRS must be set to the largest supported
1742          * value.  However, it cannot be configured larger than the MPS the
1743          * device or the bus can support.  This should already be properly
1744          * configured by a prior call to pcie_write_mps.
1745          */
1746         mrrs = pcie_get_mps(dev);
1747
1748         /* MRRS is a R/W register.  Invalid values can be written, but a
1749          * subsequent read will verify if the value is acceptable or not.
1750          * If the MRRS value provided is not acceptable (e.g., too large),
1751          * shrink the value until it is acceptable to the HW.
1752          */
1753         while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
1754                 rc = pcie_set_readrq(dev, mrrs);
1755                 if (!rc)
1756                         break;
1757
1758                 dev_warn(&dev->dev, "Failed attempting to set the MRRS\n");
1759                 mrrs /= 2;
1760         }
1761
1762         if (mrrs < 128)
1763                 dev_err(&dev->dev, "MRRS was unable to be configured with a safe value.  If problems are experienced, try running with pci=pcie_bus_safe\n");
1764 }
1765
1766 static void pcie_bus_detect_mps(struct pci_dev *dev)
1767 {
1768         struct pci_dev *bridge = dev->bus->self;
1769         int mps, p_mps;
1770
1771         if (!bridge)
1772                 return;
1773
1774         mps = pcie_get_mps(dev);
1775         p_mps = pcie_get_mps(bridge);
1776
1777         if (mps != p_mps)
1778                 dev_warn(&dev->dev, "Max Payload Size %d, but upstream %s set to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
1779                          mps, pci_name(bridge), p_mps);
1780 }
1781
1782 static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
1783 {
1784         int mps, orig_mps;
1785
1786         if (!pci_is_pcie(dev))
1787                 return 0;
1788
1789         if (pcie_bus_config == PCIE_BUS_TUNE_OFF) {
1790                 pcie_bus_detect_mps(dev);
1791                 return 0;
1792         }
1793
1794         mps = 128 << *(u8 *)data;
1795         orig_mps = pcie_get_mps(dev);
1796
1797         pcie_write_mps(dev, mps);
1798         pcie_write_mrrs(dev);
1799
1800         dev_info(&dev->dev, "Max Payload Size set to %4d/%4d (was %4d), Max Read Rq %4d\n",
1801                  pcie_get_mps(dev), 128 << dev->pcie_mpss,
1802                  orig_mps, pcie_get_readrq(dev));
1803
1804         return 0;
1805 }
1806
1807 /* pcie_bus_configure_settings requires that pci_walk_bus work in a top-down,
1808  * parents then children fashion.  If this changes, then this code will not
1809  * work as designed.
1810  */
1811 void pcie_bus_configure_settings(struct pci_bus *bus)
1812 {
1813         u8 smpss = 0;
1814
1815         if (!bus->self)
1816                 return;
1817
1818         if (!pci_is_pcie(bus->self))
1819                 return;
1820
1821         /* FIXME - Peer to peer DMA is possible, though the endpoint would need
1822          * to be aware of the MPS of the destination.  To work around this,
1823          * simply force the MPS of the entire system to the smallest possible.
1824          */
1825         if (pcie_bus_config == PCIE_BUS_PEER2PEER)
1826                 smpss = 0;
1827
1828         if (pcie_bus_config == PCIE_BUS_SAFE) {
1829                 smpss = bus->self->pcie_mpss;
1830
1831                 pcie_find_smpss(bus->self, &smpss);
1832                 pci_walk_bus(bus, pcie_find_smpss, &smpss);
1833         }
1834
1835         pcie_bus_configure_set(bus->self, &smpss);
1836         pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
1837 }
1838 EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
1839
1840 unsigned int pci_scan_child_bus(struct pci_bus *bus)
1841 {
1842         unsigned int devfn, pass, max = bus->busn_res.start;
1843         struct pci_dev *dev;
1844
1845         dev_dbg(&bus->dev, "scanning bus\n");
1846
1847         /* Go find them, Rover! */
1848         for (devfn = 0; devfn < 0x100; devfn += 8)
1849                 pci_scan_slot(bus, devfn);
1850
1851         /* Reserve buses for SR-IOV capability. */
1852         max += pci_iov_bus_range(bus);
1853
1854         /*
1855          * After performing arch-dependent fixup of the bus, look behind
1856          * all PCI-to-PCI bridges on this bus.
1857          */
1858         if (!bus->is_added) {
1859                 dev_dbg(&bus->dev, "fixups for bus\n");
1860                 pcibios_fixup_bus(bus);
1861                 bus->is_added = 1;
1862         }
1863
1864         for (pass = 0; pass < 2; pass++)
1865                 list_for_each_entry(dev, &bus->devices, bus_list) {
1866                         if (pci_is_bridge(dev))
1867                                 max = pci_scan_bridge(bus, dev, max, pass);
1868                 }
1869
1870         /*
1871          * We've scanned the bus and so we know all about what's on
1872          * the other side of any bridges that may be on this bus plus
1873          * any devices.
1874          *
1875          * Return how far we've got finding sub-buses.
1876          */
1877         dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1878         return max;
1879 }
1880 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1881
1882 /**
1883  * pcibios_root_bridge_prepare - Platform-specific host bridge setup.
1884  * @bridge: Host bridge to set up.
1885  *
1886  * Default empty implementation.  Replace with an architecture-specific setup
1887  * routine, if necessary.
1888  */
1889 int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
1890 {
1891         return 0;
1892 }
1893
1894 void __weak pcibios_add_bus(struct pci_bus *bus)
1895 {
1896 }
1897
1898 void __weak pcibios_remove_bus(struct pci_bus *bus)
1899 {
1900 }
1901
1902 struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
1903                 struct pci_ops *ops, void *sysdata, struct list_head *resources)
1904 {
1905         int error;
1906         struct pci_host_bridge *bridge;
1907         struct pci_bus *b, *b2;
1908         struct pci_host_bridge_window *window, *n;
1909         struct resource *res;
1910         resource_size_t offset;
1911         char bus_addr[64];
1912         char *fmt;
1913
1914         b = pci_alloc_bus(NULL);
1915         if (!b)
1916                 return NULL;
1917
1918         b->sysdata = sysdata;
1919         b->ops = ops;
1920         b->number = b->busn_res.start = bus;
1921         pci_bus_assign_domain_nr(b, parent);
1922         b2 = pci_find_bus(pci_domain_nr(b), bus);
1923         if (b2) {
1924                 /* If we already got to this bus through a different bridge, ignore it */
1925                 dev_dbg(&b2->dev, "bus already known\n");
1926                 goto err_out;
1927         }
1928
1929         bridge = pci_alloc_host_bridge(b);
1930         if (!bridge)
1931                 goto err_out;
1932
1933         bridge->dev.parent = parent;
1934         bridge->dev.release = pci_release_host_bridge_dev;
1935         dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus);
1936         error = pcibios_root_bridge_prepare(bridge);
1937         if (error) {
1938                 kfree(bridge);
1939                 goto err_out;
1940         }
1941
1942         error = device_register(&bridge->dev);
1943         if (error) {
1944                 put_device(&bridge->dev);
1945                 goto err_out;
1946         }
1947         b->bridge = get_device(&bridge->dev);
1948         device_enable_async_suspend(b->bridge);
1949         pci_set_bus_of_node(b);
1950
1951         if (!parent)
1952                 set_dev_node(b->bridge, pcibus_to_node(b));
1953
1954         b->dev.class = &pcibus_class;
1955         b->dev.parent = b->bridge;
1956         dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
1957         error = device_register(&b->dev);
1958         if (error)
1959                 goto class_dev_reg_err;
1960
1961         pcibios_add_bus(b);
1962
1963         /* Create legacy_io and legacy_mem files for this bus */
1964         pci_create_legacy_files(b);
1965
1966         if (parent)
1967                 dev_info(parent, "PCI host bridge to bus %s\n", dev_name(&b->dev));
1968         else
1969                 printk(KERN_INFO "PCI host bridge to bus %s\n", dev_name(&b->dev));
1970
1971         /* Add initial resources to the bus */
1972         list_for_each_entry_safe(window, n, resources, list) {
1973                 list_move_tail(&window->list, &bridge->windows);
1974                 res = window->res;
1975                 offset = window->offset;
1976                 if (res->flags & IORESOURCE_BUS)
1977                         pci_bus_insert_busn_res(b, bus, res->end);
1978                 else
1979                         pci_bus_add_resource(b, res, 0);
1980                 if (offset) {
1981                         if (resource_type(res) == IORESOURCE_IO)
1982                                 fmt = " (bus address [%#06llx-%#06llx])";
1983                         else
1984                                 fmt = " (bus address [%#010llx-%#010llx])";
1985                         snprintf(bus_addr, sizeof(bus_addr), fmt,
1986                                  (unsigned long long) (res->start - offset),
1987                                  (unsigned long long) (res->end - offset));
1988                 } else
1989                         bus_addr[0] = '\0';
1990                 dev_info(&b->dev, "root bus resource %pR%s\n", res, bus_addr);
1991         }
1992
1993         down_write(&pci_bus_sem);
1994         list_add_tail(&b->node, &pci_root_buses);
1995         up_write(&pci_bus_sem);
1996
1997         return b;
1998
1999 class_dev_reg_err:
2000         put_device(&bridge->dev);
2001         device_unregister(&bridge->dev);
2002 err_out:
2003         kfree(b);
2004         return NULL;
2005 }
2006
2007 int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
2008 {
2009         struct resource *res = &b->busn_res;
2010         struct resource *parent_res, *conflict;
2011
2012         res->start = bus;
2013         res->end = bus_max;
2014         res->flags = IORESOURCE_BUS;
2015
2016         if (!pci_is_root_bus(b))
2017                 parent_res = &b->parent->busn_res;
2018         else {
2019                 parent_res = get_pci_domain_busn_res(pci_domain_nr(b));
2020                 res->flags |= IORESOURCE_PCI_FIXED;
2021         }
2022
2023         conflict = request_resource_conflict(parent_res, res);
2024
2025         if (conflict)
2026                 dev_printk(KERN_DEBUG, &b->dev,
2027                            "busn_res: can not insert %pR under %s%pR (conflicts with %s %pR)\n",
2028                             res, pci_is_root_bus(b) ? "domain " : "",
2029                             parent_res, conflict->name, conflict);
2030
2031         return conflict == NULL;
2032 }
2033
2034 int pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
2035 {
2036         struct resource *res = &b->busn_res;
2037         struct resource old_res = *res;
2038         resource_size_t size;
2039         int ret;
2040
2041         if (res->start > bus_max)
2042                 return -EINVAL;
2043
2044         size = bus_max - res->start + 1;
2045         ret = adjust_resource(res, res->start, size);
2046         dev_printk(KERN_DEBUG, &b->dev,
2047                         "busn_res: %pR end %s updated to %02x\n",
2048                         &old_res, ret ? "can not be" : "is", bus_max);
2049
2050         if (!ret && !res->parent)
2051                 pci_bus_insert_busn_res(b, res->start, res->end);
2052
2053         return ret;
2054 }
2055
2056 void pci_bus_release_busn_res(struct pci_bus *b)
2057 {
2058         struct resource *res = &b->busn_res;
2059         int ret;
2060
2061         if (!res->flags || !res->parent)
2062                 return;
2063
2064         ret = release_resource(res);
2065         dev_printk(KERN_DEBUG, &b->dev,
2066                         "busn_res: %pR %s released\n",
2067                         res, ret ? "can not be" : "is");
2068 }
2069
2070 struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
2071                 struct pci_ops *ops, void *sysdata, struct list_head *resources)
2072 {
2073         struct pci_host_bridge_window *window;
2074         bool found = false;
2075         struct pci_bus *b;
2076         int max;
2077
2078         list_for_each_entry(window, resources, list)
2079                 if (window->res->flags & IORESOURCE_BUS) {
2080                         found = true;
2081                         break;
2082                 }
2083
2084         b = pci_create_root_bus(parent, bus, ops, sysdata, resources);
2085         if (!b)
2086                 return NULL;
2087
2088         if (!found) {
2089                 dev_info(&b->dev,
2090                  "No busn resource found for root bus, will use [bus %02x-ff]\n",
2091                         bus);
2092                 pci_bus_insert_busn_res(b, bus, 255);
2093         }
2094
2095         max = pci_scan_child_bus(b);
2096
2097         if (!found)
2098                 pci_bus_update_busn_res_end(b, max);
2099
2100         pci_bus_add_devices(b);
2101         return b;
2102 }
2103 EXPORT_SYMBOL(pci_scan_root_bus);
2104
2105 /* Deprecated; use pci_scan_root_bus() instead */
2106 struct pci_bus *pci_scan_bus_parented(struct device *parent,
2107                 int bus, struct pci_ops *ops, void *sysdata)
2108 {
2109         LIST_HEAD(resources);
2110         struct pci_bus *b;
2111
2112         pci_add_resource(&resources, &ioport_resource);
2113         pci_add_resource(&resources, &iomem_resource);
2114         pci_add_resource(&resources, &busn_resource);
2115         b = pci_create_root_bus(parent, bus, ops, sysdata, &resources);
2116         if (b)
2117                 pci_scan_child_bus(b);
2118         else
2119                 pci_free_resource_list(&resources);
2120         return b;
2121 }
2122 EXPORT_SYMBOL(pci_scan_bus_parented);
2123
2124 struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
2125                                         void *sysdata)
2126 {
2127         LIST_HEAD(resources);
2128         struct pci_bus *b;
2129
2130         pci_add_resource(&resources, &ioport_resource);
2131         pci_add_resource(&resources, &iomem_resource);
2132         pci_add_resource(&resources, &busn_resource);
2133         b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
2134         if (b) {
2135                 pci_scan_child_bus(b);
2136                 pci_bus_add_devices(b);
2137         } else {
2138                 pci_free_resource_list(&resources);
2139         }
2140         return b;
2141 }
2142 EXPORT_SYMBOL(pci_scan_bus);
2143
2144 /**
2145  * pci_rescan_bus_bridge_resize - scan a PCI bus for devices.
2146  * @bridge: PCI bridge for the bus to scan
2147  *
2148  * Scan a PCI bus and child buses for new devices, add them,
2149  * and enable them, resizing bridge mmio/io resource if necessary
2150  * and possible.  The caller must ensure the child devices are already
2151  * removed for resizing to occur.
2152  *
2153  * Returns the max number of subordinate bus discovered.
2154  */
2155 unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
2156 {
2157         unsigned int max;
2158         struct pci_bus *bus = bridge->subordinate;
2159
2160         max = pci_scan_child_bus(bus);
2161
2162         pci_assign_unassigned_bridge_resources(bridge);
2163
2164         pci_bus_add_devices(bus);
2165
2166         return max;
2167 }
2168
2169 /**
2170  * pci_rescan_bus - scan a PCI bus for devices.
2171  * @bus: PCI bus to scan
2172  *
2173  * Scan a PCI bus and child buses for new devices, adds them,
2174  * and enables them.
2175  *
2176  * Returns the max number of subordinate bus discovered.
2177  */
2178 unsigned int pci_rescan_bus(struct pci_bus *bus)
2179 {
2180         unsigned int max;
2181
2182         max = pci_scan_child_bus(bus);
2183         pci_assign_unassigned_bus_resources(bus);
2184         pci_bus_add_devices(bus);
2185
2186         return max;
2187 }
2188 EXPORT_SYMBOL_GPL(pci_rescan_bus);
2189
2190 /*
2191  * pci_rescan_bus(), pci_rescan_bus_bridge_resize() and PCI device removal
2192  * routines should always be executed under this mutex.
2193  */
2194 static DEFINE_MUTEX(pci_rescan_remove_lock);
2195
2196 void pci_lock_rescan_remove(void)
2197 {
2198         mutex_lock(&pci_rescan_remove_lock);
2199 }
2200 EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);
2201
2202 void pci_unlock_rescan_remove(void)
2203 {
2204         mutex_unlock(&pci_rescan_remove_lock);
2205 }
2206 EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);
2207
2208 static int __init pci_sort_bf_cmp(const struct device *d_a,
2209                                   const struct device *d_b)
2210 {
2211         const struct pci_dev *a = to_pci_dev(d_a);
2212         const struct pci_dev *b = to_pci_dev(d_b);
2213
2214         if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
2215         else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
2216
2217         if      (a->bus->number < b->bus->number) return -1;
2218         else if (a->bus->number > b->bus->number) return  1;
2219
2220         if      (a->devfn < b->devfn) return -1;
2221         else if (a->devfn > b->devfn) return  1;
2222
2223         return 0;
2224 }
2225
2226 void __init pci_sort_breadthfirst(void)
2227 {
2228         bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
2229 }