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