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