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