]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/pci/probe.c
PCI: Allow driver-specific data in host bridge
[karo-tx-linux.git] / drivers / pci / probe.c
1 /*
2  * probe.c - PCI detection and setup code
3  */
4
5 #include <linux/kernel.h>
6 #include <linux/delay.h>
7 #include <linux/init.h>
8 #include <linux/pci.h>
9 #include <linux/of_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(size_t priv)
525 {
526         struct pci_host_bridge *bridge;
527
528         bridge = kzalloc(sizeof(*bridge) + priv, GFP_KERNEL);
529         if (!bridge)
530                 return NULL;
531
532         INIT_LIST_HEAD(&bridge->windows);
533
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 int pci_register_host_bridge(struct pci_host_bridge *bridge)
721 {
722         struct device *parent = bridge->dev.parent;
723         struct resource_entry *window, *n;
724         struct pci_bus *bus, *b;
725         resource_size_t offset;
726         LIST_HEAD(resources);
727         struct resource *res;
728         char addr[64], *fmt;
729         const char *name;
730         int err;
731
732         bus = pci_alloc_bus(NULL);
733         if (!bus)
734                 return -ENOMEM;
735
736         bridge->bus = bus;
737
738         /* temporarily move resources off the list */
739         list_splice_init(&bridge->windows, &resources);
740         bus->sysdata = bridge->sysdata;
741         bus->msi = bridge->msi;
742         bus->ops = bridge->ops;
743         bus->number = bus->busn_res.start = bridge->busnr;
744 #ifdef CONFIG_PCI_DOMAINS_GENERIC
745         bus->domain_nr = pci_bus_find_domain_nr(bus, parent);
746 #endif
747
748         b = pci_find_bus(pci_domain_nr(bus), bridge->busnr);
749         if (b) {
750                 /* If we already got to this bus through a different bridge, ignore it */
751                 dev_dbg(&b->dev, "bus already known\n");
752                 err = -EEXIST;
753                 goto free;
754         }
755
756         dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(bus),
757                      bridge->busnr);
758
759         err = pcibios_root_bridge_prepare(bridge);
760         if (err)
761                 goto free;
762
763         err = device_register(&bridge->dev);
764         if (err)
765                 put_device(&bridge->dev);
766
767         bus->bridge = get_device(&bridge->dev);
768         device_enable_async_suspend(bus->bridge);
769         pci_set_bus_of_node(bus);
770         pci_set_bus_msi_domain(bus);
771
772         if (!parent)
773                 set_dev_node(bus->bridge, pcibus_to_node(bus));
774
775         bus->dev.class = &pcibus_class;
776         bus->dev.parent = bus->bridge;
777
778         dev_set_name(&bus->dev, "%04x:%02x", pci_domain_nr(bus), bus->number);
779         name = dev_name(&bus->dev);
780
781         err = device_register(&bus->dev);
782         if (err)
783                 goto unregister;
784
785         pcibios_add_bus(bus);
786
787         /* Create legacy_io and legacy_mem files for this bus */
788         pci_create_legacy_files(bus);
789
790         if (parent)
791                 dev_info(parent, "PCI host bridge to bus %s\n", name);
792         else
793                 pr_info("PCI host bridge to bus %s\n", name);
794
795         /* Add initial resources to the bus */
796         resource_list_for_each_entry_safe(window, n, &resources) {
797                 list_move_tail(&window->node, &bridge->windows);
798                 offset = window->offset;
799                 res = window->res;
800
801                 if (res->flags & IORESOURCE_BUS)
802                         pci_bus_insert_busn_res(bus, bus->number, res->end);
803                 else
804                         pci_bus_add_resource(bus, res, 0);
805
806                 if (offset) {
807                         if (resource_type(res) == IORESOURCE_IO)
808                                 fmt = " (bus address [%#06llx-%#06llx])";
809                         else
810                                 fmt = " (bus address [%#010llx-%#010llx])";
811
812                         snprintf(addr, sizeof(addr), fmt,
813                                  (unsigned long long)(res->start - offset),
814                                  (unsigned long long)(res->end - offset));
815                 } else
816                         addr[0] = '\0';
817
818                 dev_info(&bus->dev, "root bus resource %pR%s\n", res, addr);
819         }
820
821         down_write(&pci_bus_sem);
822         list_add_tail(&bus->node, &pci_root_buses);
823         up_write(&pci_bus_sem);
824
825         return 0;
826
827 unregister:
828         put_device(&bridge->dev);
829         device_unregister(&bridge->dev);
830
831 free:
832         kfree(bus);
833         return err;
834 }
835
836 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
837                                            struct pci_dev *bridge, int busnr)
838 {
839         struct pci_bus *child;
840         int i;
841         int ret;
842
843         /*
844          * Allocate a new bus, and inherit stuff from the parent..
845          */
846         child = pci_alloc_bus(parent);
847         if (!child)
848                 return NULL;
849
850         child->parent = parent;
851         child->ops = parent->ops;
852         child->msi = parent->msi;
853         child->sysdata = parent->sysdata;
854         child->bus_flags = parent->bus_flags;
855
856         /* initialize some portions of the bus device, but don't register it
857          * now as the parent is not properly set up yet.
858          */
859         child->dev.class = &pcibus_class;
860         dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
861
862         /*
863          * Set up the primary, secondary and subordinate
864          * bus numbers.
865          */
866         child->number = child->busn_res.start = busnr;
867         child->primary = parent->busn_res.start;
868         child->busn_res.end = 0xff;
869
870         if (!bridge) {
871                 child->dev.parent = parent->bridge;
872                 goto add_dev;
873         }
874
875         child->self = bridge;
876         child->bridge = get_device(&bridge->dev);
877         child->dev.parent = child->bridge;
878         pci_set_bus_of_node(child);
879         pci_set_bus_speed(child);
880
881         /* Set up default resource pointers and names.. */
882         for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
883                 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
884                 child->resource[i]->name = child->name;
885         }
886         bridge->subordinate = child;
887
888 add_dev:
889         pci_set_bus_msi_domain(child);
890         ret = device_register(&child->dev);
891         WARN_ON(ret < 0);
892
893         pcibios_add_bus(child);
894
895         if (child->ops->add_bus) {
896                 ret = child->ops->add_bus(child);
897                 if (WARN_ON(ret < 0))
898                         dev_err(&child->dev, "failed to add bus: %d\n", ret);
899         }
900
901         /* Create legacy_io and legacy_mem files for this bus */
902         pci_create_legacy_files(child);
903
904         return child;
905 }
906
907 struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
908                                 int busnr)
909 {
910         struct pci_bus *child;
911
912         child = pci_alloc_child_bus(parent, dev, busnr);
913         if (child) {
914                 down_write(&pci_bus_sem);
915                 list_add_tail(&child->node, &parent->children);
916                 up_write(&pci_bus_sem);
917         }
918         return child;
919 }
920 EXPORT_SYMBOL(pci_add_new_bus);
921
922 static void pci_enable_crs(struct pci_dev *pdev)
923 {
924         u16 root_cap = 0;
925
926         /* Enable CRS Software Visibility if supported */
927         pcie_capability_read_word(pdev, PCI_EXP_RTCAP, &root_cap);
928         if (root_cap & PCI_EXP_RTCAP_CRSVIS)
929                 pcie_capability_set_word(pdev, PCI_EXP_RTCTL,
930                                          PCI_EXP_RTCTL_CRSSVE);
931 }
932
933 /*
934  * If it's a bridge, configure it and scan the bus behind it.
935  * For CardBus bridges, we don't scan behind as the devices will
936  * be handled by the bridge driver itself.
937  *
938  * We need to process bridges in two passes -- first we scan those
939  * already configured by the BIOS and after we are done with all of
940  * them, we proceed to assigning numbers to the remaining buses in
941  * order to avoid overlaps between old and new bus numbers.
942  */
943 int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
944 {
945         struct pci_bus *child;
946         int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
947         u32 buses, i, j = 0;
948         u16 bctl;
949         u8 primary, secondary, subordinate;
950         int broken = 0;
951
952         /*
953          * Make sure the bridge is powered on to be able to access config
954          * space of devices below it.
955          */
956         pm_runtime_get_sync(&dev->dev);
957
958         pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
959         primary = buses & 0xFF;
960         secondary = (buses >> 8) & 0xFF;
961         subordinate = (buses >> 16) & 0xFF;
962
963         dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
964                 secondary, subordinate, pass);
965
966         if (!primary && (primary != bus->number) && secondary && subordinate) {
967                 dev_warn(&dev->dev, "Primary bus is hard wired to 0\n");
968                 primary = bus->number;
969         }
970
971         /* Check if setup is sensible at all */
972         if (!pass &&
973             (primary != bus->number || secondary <= bus->number ||
974              secondary > subordinate)) {
975                 dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
976                          secondary, subordinate);
977                 broken = 1;
978         }
979
980         /* Disable MasterAbortMode during probing to avoid reporting
981            of bus errors (in some architectures) */
982         pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
983         pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
984                               bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
985
986         pci_enable_crs(dev);
987
988         if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
989             !is_cardbus && !broken) {
990                 unsigned int cmax;
991                 /*
992                  * Bus already configured by firmware, process it in the first
993                  * pass and just note the configuration.
994                  */
995                 if (pass)
996                         goto out;
997
998                 /*
999                  * The bus might already exist for two reasons: Either we are
1000                  * rescanning the bus or the bus is reachable through more than
1001                  * one bridge. The second case can happen with the i450NX
1002                  * chipset.
1003                  */
1004                 child = pci_find_bus(pci_domain_nr(bus), secondary);
1005                 if (!child) {
1006                         child = pci_add_new_bus(bus, dev, secondary);
1007                         if (!child)
1008                                 goto out;
1009                         child->primary = primary;
1010                         pci_bus_insert_busn_res(child, secondary, subordinate);
1011                         child->bridge_ctl = bctl;
1012                 }
1013
1014                 cmax = pci_scan_child_bus(child);
1015                 if (cmax > subordinate)
1016                         dev_warn(&dev->dev, "bridge has subordinate %02x but max busn %02x\n",
1017                                  subordinate, cmax);
1018                 /* subordinate should equal child->busn_res.end */
1019                 if (subordinate > max)
1020                         max = subordinate;
1021         } else {
1022                 /*
1023                  * We need to assign a number to this bus which we always
1024                  * do in the second pass.
1025                  */
1026                 if (!pass) {
1027                         if (pcibios_assign_all_busses() || broken || is_cardbus)
1028                                 /* Temporarily disable forwarding of the
1029                                    configuration cycles on all bridges in
1030                                    this bus segment to avoid possible
1031                                    conflicts in the second pass between two
1032                                    bridges programmed with overlapping
1033                                    bus ranges. */
1034                                 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
1035                                                        buses & ~0xffffff);
1036                         goto out;
1037                 }
1038
1039                 /* Clear errors */
1040                 pci_write_config_word(dev, PCI_STATUS, 0xffff);
1041
1042                 /* Prevent assigning a bus number that already exists.
1043                  * This can happen when a bridge is hot-plugged, so in
1044                  * this case we only re-scan this bus. */
1045                 child = pci_find_bus(pci_domain_nr(bus), max+1);
1046                 if (!child) {
1047                         child = pci_add_new_bus(bus, dev, max+1);
1048                         if (!child)
1049                                 goto out;
1050                         pci_bus_insert_busn_res(child, max+1, 0xff);
1051                 }
1052                 max++;
1053                 buses = (buses & 0xff000000)
1054                       | ((unsigned int)(child->primary)     <<  0)
1055                       | ((unsigned int)(child->busn_res.start)   <<  8)
1056                       | ((unsigned int)(child->busn_res.end) << 16);
1057
1058                 /*
1059                  * yenta.c forces a secondary latency timer of 176.
1060                  * Copy that behaviour here.
1061                  */
1062                 if (is_cardbus) {
1063                         buses &= ~0xff000000;
1064                         buses |= CARDBUS_LATENCY_TIMER << 24;
1065                 }
1066
1067                 /*
1068                  * We need to blast all three values with a single write.
1069                  */
1070                 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
1071
1072                 if (!is_cardbus) {
1073                         child->bridge_ctl = bctl;
1074                         max = pci_scan_child_bus(child);
1075                 } else {
1076                         /*
1077                          * For CardBus bridges, we leave 4 bus numbers
1078                          * as cards with a PCI-to-PCI bridge can be
1079                          * inserted later.
1080                          */
1081                         for (i = 0; i < CARDBUS_RESERVE_BUSNR; i++) {
1082                                 struct pci_bus *parent = bus;
1083                                 if (pci_find_bus(pci_domain_nr(bus),
1084                                                         max+i+1))
1085                                         break;
1086                                 while (parent->parent) {
1087                                         if ((!pcibios_assign_all_busses()) &&
1088                                             (parent->busn_res.end > max) &&
1089                                             (parent->busn_res.end <= max+i)) {
1090                                                 j = 1;
1091                                         }
1092                                         parent = parent->parent;
1093                                 }
1094                                 if (j) {
1095                                         /*
1096                                          * Often, there are two cardbus bridges
1097                                          * -- try to leave one valid bus number
1098                                          * for each one.
1099                                          */
1100                                         i /= 2;
1101                                         break;
1102                                 }
1103                         }
1104                         max += i;
1105                 }
1106                 /*
1107                  * Set the subordinate bus number to its real value.
1108                  */
1109                 pci_bus_update_busn_res_end(child, max);
1110                 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
1111         }
1112
1113         sprintf(child->name,
1114                 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
1115                 pci_domain_nr(bus), child->number);
1116
1117         /* Has only triggered on CardBus, fixup is in yenta_socket */
1118         while (bus->parent) {
1119                 if ((child->busn_res.end > bus->busn_res.end) ||
1120                     (child->number > bus->busn_res.end) ||
1121                     (child->number < bus->number) ||
1122                     (child->busn_res.end < bus->number)) {
1123                         dev_info(&child->dev, "%pR %s hidden behind%s bridge %s %pR\n",
1124                                 &child->busn_res,
1125                                 (bus->number > child->busn_res.end &&
1126                                  bus->busn_res.end < child->number) ?
1127                                         "wholly" : "partially",
1128                                 bus->self->transparent ? " transparent" : "",
1129                                 dev_name(&bus->dev),
1130                                 &bus->busn_res);
1131                 }
1132                 bus = bus->parent;
1133         }
1134
1135 out:
1136         pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
1137
1138         pm_runtime_put(&dev->dev);
1139
1140         return max;
1141 }
1142 EXPORT_SYMBOL(pci_scan_bridge);
1143
1144 /*
1145  * Read interrupt line and base address registers.
1146  * The architecture-dependent code can tweak these, of course.
1147  */
1148 static void pci_read_irq(struct pci_dev *dev)
1149 {
1150         unsigned char irq;
1151
1152         pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
1153         dev->pin = irq;
1154         if (irq)
1155                 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
1156         dev->irq = irq;
1157 }
1158
1159 void set_pcie_port_type(struct pci_dev *pdev)
1160 {
1161         int pos;
1162         u16 reg16;
1163         int type;
1164         struct pci_dev *parent;
1165
1166         pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
1167         if (!pos)
1168                 return;
1169         pdev->pcie_cap = pos;
1170         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
1171         pdev->pcie_flags_reg = reg16;
1172         pci_read_config_word(pdev, pos + PCI_EXP_DEVCAP, &reg16);
1173         pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
1174
1175         /*
1176          * A Root Port is always the upstream end of a Link.  No PCIe
1177          * component has two Links.  Two Links are connected by a Switch
1178          * that has a Port on each Link and internal logic to connect the
1179          * two Ports.
1180          */
1181         type = pci_pcie_type(pdev);
1182         if (type == PCI_EXP_TYPE_ROOT_PORT)
1183                 pdev->has_secondary_link = 1;
1184         else if (type == PCI_EXP_TYPE_UPSTREAM ||
1185                  type == PCI_EXP_TYPE_DOWNSTREAM) {
1186                 parent = pci_upstream_bridge(pdev);
1187
1188                 /*
1189                  * Usually there's an upstream device (Root Port or Switch
1190                  * Downstream Port), but we can't assume one exists.
1191                  */
1192                 if (parent && !parent->has_secondary_link)
1193                         pdev->has_secondary_link = 1;
1194         }
1195 }
1196
1197 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
1198 {
1199         u32 reg32;
1200
1201         pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32);
1202         if (reg32 & PCI_EXP_SLTCAP_HPC)
1203                 pdev->is_hotplug_bridge = 1;
1204 }
1205
1206 /**
1207  * pci_ext_cfg_is_aliased - is ext config space just an alias of std config?
1208  * @dev: PCI device
1209  *
1210  * PCI Express to PCI/PCI-X Bridge Specification, rev 1.0, 4.1.4 says that
1211  * when forwarding a type1 configuration request the bridge must check that
1212  * the extended register address field is zero.  The bridge is not permitted
1213  * to forward the transactions and must handle it as an Unsupported Request.
1214  * Some bridges do not follow this rule and simply drop the extended register
1215  * bits, resulting in the standard config space being aliased, every 256
1216  * bytes across the entire configuration space.  Test for this condition by
1217  * comparing the first dword of each potential alias to the vendor/device ID.
1218  * Known offenders:
1219  *   ASM1083/1085 PCIe-to-PCI Reversible Bridge (1b21:1080, rev 01 & 03)
1220  *   AMD/ATI SBx00 PCI to PCI Bridge (1002:4384, rev 40)
1221  */
1222 static bool pci_ext_cfg_is_aliased(struct pci_dev *dev)
1223 {
1224 #ifdef CONFIG_PCI_QUIRKS
1225         int pos;
1226         u32 header, tmp;
1227
1228         pci_read_config_dword(dev, PCI_VENDOR_ID, &header);
1229
1230         for (pos = PCI_CFG_SPACE_SIZE;
1231              pos < PCI_CFG_SPACE_EXP_SIZE; pos += PCI_CFG_SPACE_SIZE) {
1232                 if (pci_read_config_dword(dev, pos, &tmp) != PCIBIOS_SUCCESSFUL
1233                     || header != tmp)
1234                         return false;
1235         }
1236
1237         return true;
1238 #else
1239         return false;
1240 #endif
1241 }
1242
1243 /**
1244  * pci_cfg_space_size - get the configuration space size of the PCI device.
1245  * @dev: PCI device
1246  *
1247  * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1248  * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
1249  * access it.  Maybe we don't have a way to generate extended config space
1250  * accesses, or the device is behind a reverse Express bridge.  So we try
1251  * reading the dword at 0x100 which must either be 0 or a valid extended
1252  * capability header.
1253  */
1254 static int pci_cfg_space_size_ext(struct pci_dev *dev)
1255 {
1256         u32 status;
1257         int pos = PCI_CFG_SPACE_SIZE;
1258
1259         if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1260                 return PCI_CFG_SPACE_SIZE;
1261         if (status == 0xffffffff || pci_ext_cfg_is_aliased(dev))
1262                 return PCI_CFG_SPACE_SIZE;
1263
1264         return PCI_CFG_SPACE_EXP_SIZE;
1265 }
1266
1267 int pci_cfg_space_size(struct pci_dev *dev)
1268 {
1269         int pos;
1270         u32 status;
1271         u16 class;
1272
1273         class = dev->class >> 8;
1274         if (class == PCI_CLASS_BRIDGE_HOST)
1275                 return pci_cfg_space_size_ext(dev);
1276
1277         if (pci_is_pcie(dev))
1278                 return pci_cfg_space_size_ext(dev);
1279
1280         pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1281         if (!pos)
1282                 return PCI_CFG_SPACE_SIZE;
1283
1284         pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1285         if (status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ))
1286                 return pci_cfg_space_size_ext(dev);
1287
1288         return PCI_CFG_SPACE_SIZE;
1289 }
1290
1291 #define LEGACY_IO_RESOURCE      (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
1292
1293 static void pci_msi_setup_pci_dev(struct pci_dev *dev)
1294 {
1295         /*
1296          * Disable the MSI hardware to avoid screaming interrupts
1297          * during boot.  This is the power on reset default so
1298          * usually this should be a noop.
1299          */
1300         dev->msi_cap = pci_find_capability(dev, PCI_CAP_ID_MSI);
1301         if (dev->msi_cap)
1302                 pci_msi_set_enable(dev, 0);
1303
1304         dev->msix_cap = pci_find_capability(dev, PCI_CAP_ID_MSIX);
1305         if (dev->msix_cap)
1306                 pci_msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0);
1307 }
1308
1309 /**
1310  * pci_setup_device - fill in class and map information of a device
1311  * @dev: the device structure to fill
1312  *
1313  * Initialize the device structure with information about the device's
1314  * vendor,class,memory and IO-space addresses,IRQ lines etc.
1315  * Called at initialisation of the PCI subsystem and by CardBus services.
1316  * Returns 0 on success and negative if unknown type of device (not normal,
1317  * bridge or CardBus).
1318  */
1319 int pci_setup_device(struct pci_dev *dev)
1320 {
1321         u32 class;
1322         u16 cmd;
1323         u8 hdr_type;
1324         int pos = 0;
1325         struct pci_bus_region region;
1326         struct resource *res;
1327
1328         if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
1329                 return -EIO;
1330
1331         dev->sysdata = dev->bus->sysdata;
1332         dev->dev.parent = dev->bus->bridge;
1333         dev->dev.bus = &pci_bus_type;
1334         dev->hdr_type = hdr_type & 0x7f;
1335         dev->multifunction = !!(hdr_type & 0x80);
1336         dev->error_state = pci_channel_io_normal;
1337         set_pcie_port_type(dev);
1338
1339         pci_dev_assign_slot(dev);
1340         /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
1341            set this higher, assuming the system even supports it.  */
1342         dev->dma_mask = 0xffffffff;
1343
1344         dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
1345                      dev->bus->number, PCI_SLOT(dev->devfn),
1346                      PCI_FUNC(dev->devfn));
1347
1348         pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
1349         dev->revision = class & 0xff;
1350         dev->class = class >> 8;                    /* upper 3 bytes */
1351
1352         dev_printk(KERN_DEBUG, &dev->dev, "[%04x:%04x] type %02x class %#08x\n",
1353                    dev->vendor, dev->device, dev->hdr_type, dev->class);
1354
1355         /* need to have dev->class ready */
1356         dev->cfg_size = pci_cfg_space_size(dev);
1357
1358         /* "Unknown power state" */
1359         dev->current_state = PCI_UNKNOWN;
1360
1361         /* Early fixups, before probing the BARs */
1362         pci_fixup_device(pci_fixup_early, dev);
1363         /* device class may be changed after fixup */
1364         class = dev->class >> 8;
1365
1366         if (dev->non_compliant_bars) {
1367                 pci_read_config_word(dev, PCI_COMMAND, &cmd);
1368                 if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
1369                         dev_info(&dev->dev, "device has non-compliant BARs; disabling IO/MEM decoding\n");
1370                         cmd &= ~PCI_COMMAND_IO;
1371                         cmd &= ~PCI_COMMAND_MEMORY;
1372                         pci_write_config_word(dev, PCI_COMMAND, cmd);
1373                 }
1374         }
1375
1376         switch (dev->hdr_type) {                    /* header type */
1377         case PCI_HEADER_TYPE_NORMAL:                /* standard header */
1378                 if (class == PCI_CLASS_BRIDGE_PCI)
1379                         goto bad;
1380                 pci_read_irq(dev);
1381                 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
1382                 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1383                 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
1384
1385                 /*
1386                  * Do the ugly legacy mode stuff here rather than broken chip
1387                  * quirk code. Legacy mode ATA controllers have fixed
1388                  * addresses. These are not always echoed in BAR0-3, and
1389                  * BAR0-3 in a few cases contain junk!
1390                  */
1391                 if (class == PCI_CLASS_STORAGE_IDE) {
1392                         u8 progif;
1393                         pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
1394                         if ((progif & 1) == 0) {
1395                                 region.start = 0x1F0;
1396                                 region.end = 0x1F7;
1397                                 res = &dev->resource[0];
1398                                 res->flags = LEGACY_IO_RESOURCE;
1399                                 pcibios_bus_to_resource(dev->bus, res, &region);
1400                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x10: %pR\n",
1401                                          res);
1402                                 region.start = 0x3F6;
1403                                 region.end = 0x3F6;
1404                                 res = &dev->resource[1];
1405                                 res->flags = LEGACY_IO_RESOURCE;
1406                                 pcibios_bus_to_resource(dev->bus, res, &region);
1407                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x14: %pR\n",
1408                                          res);
1409                         }
1410                         if ((progif & 4) == 0) {
1411                                 region.start = 0x170;
1412                                 region.end = 0x177;
1413                                 res = &dev->resource[2];
1414                                 res->flags = LEGACY_IO_RESOURCE;
1415                                 pcibios_bus_to_resource(dev->bus, res, &region);
1416                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x18: %pR\n",
1417                                          res);
1418                                 region.start = 0x376;
1419                                 region.end = 0x376;
1420                                 res = &dev->resource[3];
1421                                 res->flags = LEGACY_IO_RESOURCE;
1422                                 pcibios_bus_to_resource(dev->bus, res, &region);
1423                                 dev_info(&dev->dev, "legacy IDE quirk: reg 0x1c: %pR\n",
1424                                          res);
1425                         }
1426                 }
1427                 break;
1428
1429         case PCI_HEADER_TYPE_BRIDGE:                /* bridge header */
1430                 if (class != PCI_CLASS_BRIDGE_PCI)
1431                         goto bad;
1432                 /* The PCI-to-PCI bridge spec requires that subtractive
1433                    decoding (i.e. transparent) bridge must have programming
1434                    interface code of 0x01. */
1435                 pci_read_irq(dev);
1436                 dev->transparent = ((dev->class & 0xff) == 1);
1437                 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
1438                 set_pcie_hotplug_bridge(dev);
1439                 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
1440                 if (pos) {
1441                         pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
1442                         pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
1443                 }
1444                 break;
1445
1446         case PCI_HEADER_TYPE_CARDBUS:               /* CardBus bridge header */
1447                 if (class != PCI_CLASS_BRIDGE_CARDBUS)
1448                         goto bad;
1449                 pci_read_irq(dev);
1450                 pci_read_bases(dev, 1, 0);
1451                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1452                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
1453                 break;
1454
1455         default:                                    /* unknown header */
1456                 dev_err(&dev->dev, "unknown header type %02x, ignoring device\n",
1457                         dev->hdr_type);
1458                 return -EIO;
1459
1460         bad:
1461                 dev_err(&dev->dev, "ignoring class %#08x (doesn't match header type %02x)\n",
1462                         dev->class, dev->hdr_type);
1463                 dev->class = PCI_CLASS_NOT_DEFINED << 8;
1464         }
1465
1466         /* We found a fine healthy device, go go go... */
1467         return 0;
1468 }
1469
1470 static void pci_configure_mps(struct pci_dev *dev)
1471 {
1472         struct pci_dev *bridge = pci_upstream_bridge(dev);
1473         int mps, p_mps, rc;
1474
1475         if (!pci_is_pcie(dev) || !bridge || !pci_is_pcie(bridge))
1476                 return;
1477
1478         mps = pcie_get_mps(dev);
1479         p_mps = pcie_get_mps(bridge);
1480
1481         if (mps == p_mps)
1482                 return;
1483
1484         if (pcie_bus_config == PCIE_BUS_TUNE_OFF) {
1485                 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",
1486                          mps, pci_name(bridge), p_mps);
1487                 return;
1488         }
1489
1490         /*
1491          * Fancier MPS configuration is done later by
1492          * pcie_bus_configure_settings()
1493          */
1494         if (pcie_bus_config != PCIE_BUS_DEFAULT)
1495                 return;
1496
1497         rc = pcie_set_mps(dev, p_mps);
1498         if (rc) {
1499                 dev_warn(&dev->dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n",
1500                          p_mps);
1501                 return;
1502         }
1503
1504         dev_info(&dev->dev, "Max Payload Size set to %d (was %d, max %d)\n",
1505                  p_mps, mps, 128 << dev->pcie_mpss);
1506 }
1507
1508 static struct hpp_type0 pci_default_type0 = {
1509         .revision = 1,
1510         .cache_line_size = 8,
1511         .latency_timer = 0x40,
1512         .enable_serr = 0,
1513         .enable_perr = 0,
1514 };
1515
1516 static void program_hpp_type0(struct pci_dev *dev, struct hpp_type0 *hpp)
1517 {
1518         u16 pci_cmd, pci_bctl;
1519
1520         if (!hpp)
1521                 hpp = &pci_default_type0;
1522
1523         if (hpp->revision > 1) {
1524                 dev_warn(&dev->dev,
1525                          "PCI settings rev %d not supported; using defaults\n",
1526                          hpp->revision);
1527                 hpp = &pci_default_type0;
1528         }
1529
1530         pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, hpp->cache_line_size);
1531         pci_write_config_byte(dev, PCI_LATENCY_TIMER, hpp->latency_timer);
1532         pci_read_config_word(dev, PCI_COMMAND, &pci_cmd);
1533         if (hpp->enable_serr)
1534                 pci_cmd |= PCI_COMMAND_SERR;
1535         if (hpp->enable_perr)
1536                 pci_cmd |= PCI_COMMAND_PARITY;
1537         pci_write_config_word(dev, PCI_COMMAND, pci_cmd);
1538
1539         /* Program bridge control value */
1540         if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
1541                 pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER,
1542                                       hpp->latency_timer);
1543                 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &pci_bctl);
1544                 if (hpp->enable_serr)
1545                         pci_bctl |= PCI_BRIDGE_CTL_SERR;
1546                 if (hpp->enable_perr)
1547                         pci_bctl |= PCI_BRIDGE_CTL_PARITY;
1548                 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, pci_bctl);
1549         }
1550 }
1551
1552 static void program_hpp_type1(struct pci_dev *dev, struct hpp_type1 *hpp)
1553 {
1554         if (hpp)
1555                 dev_warn(&dev->dev, "PCI-X settings not supported\n");
1556 }
1557
1558 static void program_hpp_type2(struct pci_dev *dev, struct hpp_type2 *hpp)
1559 {
1560         int pos;
1561         u32 reg32;
1562
1563         if (!hpp)
1564                 return;
1565
1566         if (hpp->revision > 1) {
1567                 dev_warn(&dev->dev, "PCIe settings rev %d not supported\n",
1568                          hpp->revision);
1569                 return;
1570         }
1571
1572         /*
1573          * Don't allow _HPX to change MPS or MRRS settings.  We manage
1574          * those to make sure they're consistent with the rest of the
1575          * platform.
1576          */
1577         hpp->pci_exp_devctl_and |= PCI_EXP_DEVCTL_PAYLOAD |
1578                                     PCI_EXP_DEVCTL_READRQ;
1579         hpp->pci_exp_devctl_or &= ~(PCI_EXP_DEVCTL_PAYLOAD |
1580                                     PCI_EXP_DEVCTL_READRQ);
1581
1582         /* Initialize Device Control Register */
1583         pcie_capability_clear_and_set_word(dev, PCI_EXP_DEVCTL,
1584                         ~hpp->pci_exp_devctl_and, hpp->pci_exp_devctl_or);
1585
1586         /* Initialize Link Control Register */
1587         if (pcie_cap_has_lnkctl(dev))
1588                 pcie_capability_clear_and_set_word(dev, PCI_EXP_LNKCTL,
1589                         ~hpp->pci_exp_lnkctl_and, hpp->pci_exp_lnkctl_or);
1590
1591         /* Find Advanced Error Reporting Enhanced Capability */
1592         pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
1593         if (!pos)
1594                 return;
1595
1596         /* Initialize Uncorrectable Error Mask Register */
1597         pci_read_config_dword(dev, pos + PCI_ERR_UNCOR_MASK, &reg32);
1598         reg32 = (reg32 & hpp->unc_err_mask_and) | hpp->unc_err_mask_or;
1599         pci_write_config_dword(dev, pos + PCI_ERR_UNCOR_MASK, reg32);
1600
1601         /* Initialize Uncorrectable Error Severity Register */
1602         pci_read_config_dword(dev, pos + PCI_ERR_UNCOR_SEVER, &reg32);
1603         reg32 = (reg32 & hpp->unc_err_sever_and) | hpp->unc_err_sever_or;
1604         pci_write_config_dword(dev, pos + PCI_ERR_UNCOR_SEVER, reg32);
1605
1606         /* Initialize Correctable Error Mask Register */
1607         pci_read_config_dword(dev, pos + PCI_ERR_COR_MASK, &reg32);
1608         reg32 = (reg32 & hpp->cor_err_mask_and) | hpp->cor_err_mask_or;
1609         pci_write_config_dword(dev, pos + PCI_ERR_COR_MASK, reg32);
1610
1611         /* Initialize Advanced Error Capabilities and Control Register */
1612         pci_read_config_dword(dev, pos + PCI_ERR_CAP, &reg32);
1613         reg32 = (reg32 & hpp->adv_err_cap_and) | hpp->adv_err_cap_or;
1614         pci_write_config_dword(dev, pos + PCI_ERR_CAP, reg32);
1615
1616         /*
1617          * FIXME: The following two registers are not supported yet.
1618          *
1619          *   o Secondary Uncorrectable Error Severity Register
1620          *   o Secondary Uncorrectable Error Mask Register
1621          */
1622 }
1623
1624 static void pci_configure_device(struct pci_dev *dev)
1625 {
1626         struct hotplug_params hpp;
1627         int ret;
1628
1629         pci_configure_mps(dev);
1630
1631         memset(&hpp, 0, sizeof(hpp));
1632         ret = pci_get_hp_params(dev, &hpp);
1633         if (ret)
1634                 return;
1635
1636         program_hpp_type2(dev, hpp.t2);
1637         program_hpp_type1(dev, hpp.t1);
1638         program_hpp_type0(dev, hpp.t0);
1639 }
1640
1641 static void pci_release_capabilities(struct pci_dev *dev)
1642 {
1643         pci_vpd_release(dev);
1644         pci_iov_release(dev);
1645         pci_free_cap_save_buffers(dev);
1646 }
1647
1648 /**
1649  * pci_release_dev - free a pci device structure when all users of it are finished.
1650  * @dev: device that's been disconnected
1651  *
1652  * Will be called only by the device core when all users of this pci device are
1653  * done.
1654  */
1655 static void pci_release_dev(struct device *dev)
1656 {
1657         struct pci_dev *pci_dev;
1658
1659         pci_dev = to_pci_dev(dev);
1660         pci_release_capabilities(pci_dev);
1661         pci_release_of_node(pci_dev);
1662         pcibios_release_device(pci_dev);
1663         pci_bus_put(pci_dev->bus);
1664         kfree(pci_dev->driver_override);
1665         kfree(pci_dev->dma_alias_mask);
1666         kfree(pci_dev);
1667 }
1668
1669 struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
1670 {
1671         struct pci_dev *dev;
1672
1673         dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1674         if (!dev)
1675                 return NULL;
1676
1677         INIT_LIST_HEAD(&dev->bus_list);
1678         dev->dev.type = &pci_dev_type;
1679         dev->bus = pci_bus_get(bus);
1680
1681         return dev;
1682 }
1683 EXPORT_SYMBOL(pci_alloc_dev);
1684
1685 bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
1686                                 int crs_timeout)
1687 {
1688         int delay = 1;
1689
1690         if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1691                 return false;
1692
1693         /* some broken boards return 0 or ~0 if a slot is empty: */
1694         if (*l == 0xffffffff || *l == 0x00000000 ||
1695             *l == 0x0000ffff || *l == 0xffff0000)
1696                 return false;
1697
1698         /*
1699          * Configuration Request Retry Status.  Some root ports return the
1700          * actual device ID instead of the synthetic ID (0xFFFF) required
1701          * by the PCIe spec.  Ignore the device ID and only check for
1702          * (vendor id == 1).
1703          */
1704         while ((*l & 0xffff) == 0x0001) {
1705                 if (!crs_timeout)
1706                         return false;
1707
1708                 msleep(delay);
1709                 delay *= 2;
1710                 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1711                         return false;
1712                 /* Card hasn't responded in 60 seconds?  Must be stuck. */
1713                 if (delay > crs_timeout) {
1714                         printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not responding\n",
1715                                pci_domain_nr(bus), bus->number, PCI_SLOT(devfn),
1716                                PCI_FUNC(devfn));
1717                         return false;
1718                 }
1719         }
1720
1721         return true;
1722 }
1723 EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
1724
1725 /*
1726  * Read the config data for a PCI device, sanity-check it
1727  * and fill in the dev structure...
1728  */
1729 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1730 {
1731         struct pci_dev *dev;
1732         u32 l;
1733
1734         if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000))
1735                 return NULL;
1736
1737         dev = pci_alloc_dev(bus);
1738         if (!dev)
1739                 return NULL;
1740
1741         dev->devfn = devfn;
1742         dev->vendor = l & 0xffff;
1743         dev->device = (l >> 16) & 0xffff;
1744
1745         pci_set_of_node(dev);
1746
1747         if (pci_setup_device(dev)) {
1748                 pci_bus_put(dev->bus);
1749                 kfree(dev);
1750                 return NULL;
1751         }
1752
1753         return dev;
1754 }
1755
1756 static void pci_init_capabilities(struct pci_dev *dev)
1757 {
1758         /* Enhanced Allocation */
1759         pci_ea_init(dev);
1760
1761         /* Setup MSI caps & disable MSI/MSI-X interrupts */
1762         pci_msi_setup_pci_dev(dev);
1763
1764         /* Buffers for saving PCIe and PCI-X capabilities */
1765         pci_allocate_cap_save_buffers(dev);
1766
1767         /* Power Management */
1768         pci_pm_init(dev);
1769
1770         /* Vital Product Data */
1771         pci_vpd_init(dev);
1772
1773         /* Alternative Routing-ID Forwarding */
1774         pci_configure_ari(dev);
1775
1776         /* Single Root I/O Virtualization */
1777         pci_iov_init(dev);
1778
1779         /* Address Translation Services */
1780         pci_ats_init(dev);
1781
1782         /* Enable ACS P2P upstream forwarding */
1783         pci_enable_acs(dev);
1784
1785         /* Precision Time Measurement */
1786         pci_ptm_init(dev);
1787
1788         /* Advanced Error Reporting */
1789         pci_aer_init(dev);
1790 }
1791
1792 /*
1793  * This is the equivalent of pci_host_bridge_msi_domain that acts on
1794  * devices. Firmware interfaces that can select the MSI domain on a
1795  * per-device basis should be called from here.
1796  */
1797 static struct irq_domain *pci_dev_msi_domain(struct pci_dev *dev)
1798 {
1799         struct irq_domain *d;
1800
1801         /*
1802          * If a domain has been set through the pcibios_add_device
1803          * callback, then this is the one (platform code knows best).
1804          */
1805         d = dev_get_msi_domain(&dev->dev);
1806         if (d)
1807                 return d;
1808
1809         /*
1810          * Let's see if we have a firmware interface able to provide
1811          * the domain.
1812          */
1813         d = pci_msi_get_device_domain(dev);
1814         if (d)
1815                 return d;
1816
1817         return NULL;
1818 }
1819
1820 static void pci_set_msi_domain(struct pci_dev *dev)
1821 {
1822         struct irq_domain *d;
1823
1824         /*
1825          * If the platform or firmware interfaces cannot supply a
1826          * device-specific MSI domain, then inherit the default domain
1827          * from the host bridge itself.
1828          */
1829         d = pci_dev_msi_domain(dev);
1830         if (!d)
1831                 d = dev_get_msi_domain(&dev->bus->dev);
1832
1833         dev_set_msi_domain(&dev->dev, d);
1834 }
1835
1836 /**
1837  * pci_dma_configure - Setup DMA configuration
1838  * @dev: ptr to pci_dev struct of the PCI device
1839  *
1840  * Function to update PCI devices's DMA configuration using the same
1841  * info from the OF node or ACPI node of host bridge's parent (if any).
1842  */
1843 static void pci_dma_configure(struct pci_dev *dev)
1844 {
1845         struct device *bridge = pci_get_host_bridge_device(dev);
1846
1847         if (IS_ENABLED(CONFIG_OF) &&
1848                 bridge->parent && bridge->parent->of_node) {
1849                         of_dma_configure(&dev->dev, bridge->parent->of_node);
1850         } else if (has_acpi_companion(bridge)) {
1851                 struct acpi_device *adev = to_acpi_device_node(bridge->fwnode);
1852                 enum dev_dma_attr attr = acpi_get_dma_attr(adev);
1853
1854                 if (attr == DEV_DMA_NOT_SUPPORTED)
1855                         dev_warn(&dev->dev, "DMA not supported.\n");
1856                 else
1857                         arch_setup_dma_ops(&dev->dev, 0, 0, NULL,
1858                                            attr == DEV_DMA_COHERENT);
1859         }
1860
1861         pci_put_host_bridge_device(bridge);
1862 }
1863
1864 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1865 {
1866         int ret;
1867
1868         pci_configure_device(dev);
1869
1870         device_initialize(&dev->dev);
1871         dev->dev.release = pci_release_dev;
1872
1873         set_dev_node(&dev->dev, pcibus_to_node(bus));
1874         dev->dev.dma_mask = &dev->dma_mask;
1875         dev->dev.dma_parms = &dev->dma_parms;
1876         dev->dev.coherent_dma_mask = 0xffffffffull;
1877         pci_dma_configure(dev);
1878
1879         pci_set_dma_max_seg_size(dev, 65536);
1880         pci_set_dma_seg_boundary(dev, 0xffffffff);
1881
1882         /* Fix up broken headers */
1883         pci_fixup_device(pci_fixup_header, dev);
1884
1885         /* moved out from quirk header fixup code */
1886         pci_reassigndev_resource_alignment(dev);
1887
1888         /* Clear the state_saved flag. */
1889         dev->state_saved = false;
1890
1891         /* Initialize various capabilities */
1892         pci_init_capabilities(dev);
1893
1894         /*
1895          * Add the device to our list of discovered devices
1896          * and the bus list for fixup functions, etc.
1897          */
1898         down_write(&pci_bus_sem);
1899         list_add_tail(&dev->bus_list, &bus->devices);
1900         up_write(&pci_bus_sem);
1901
1902         ret = pcibios_add_device(dev);
1903         WARN_ON(ret < 0);
1904
1905         /* Setup MSI irq domain */
1906         pci_set_msi_domain(dev);
1907
1908         /* Notifier could use PCI capabilities */
1909         dev->match_driver = false;
1910         ret = device_add(&dev->dev);
1911         WARN_ON(ret < 0);
1912 }
1913
1914 struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn)
1915 {
1916         struct pci_dev *dev;
1917
1918         dev = pci_get_slot(bus, devfn);
1919         if (dev) {
1920                 pci_dev_put(dev);
1921                 return dev;
1922         }
1923
1924         dev = pci_scan_device(bus, devfn);
1925         if (!dev)
1926                 return NULL;
1927
1928         pci_device_add(dev, bus);
1929
1930         return dev;
1931 }
1932 EXPORT_SYMBOL(pci_scan_single_device);
1933
1934 static unsigned next_fn(struct pci_bus *bus, struct pci_dev *dev, unsigned fn)
1935 {
1936         int pos;
1937         u16 cap = 0;
1938         unsigned next_fn;
1939
1940         if (pci_ari_enabled(bus)) {
1941                 if (!dev)
1942                         return 0;
1943                 pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1944                 if (!pos)
1945                         return 0;
1946
1947                 pci_read_config_word(dev, pos + PCI_ARI_CAP, &cap);
1948                 next_fn = PCI_ARI_CAP_NFN(cap);
1949                 if (next_fn <= fn)
1950                         return 0;       /* protect against malformed list */
1951
1952                 return next_fn;
1953         }
1954
1955         /* dev may be NULL for non-contiguous multifunction devices */
1956         if (!dev || dev->multifunction)
1957                 return (fn + 1) % 8;
1958
1959         return 0;
1960 }
1961
1962 static int only_one_child(struct pci_bus *bus)
1963 {
1964         struct pci_dev *parent = bus->self;
1965
1966         if (!parent || !pci_is_pcie(parent))
1967                 return 0;
1968         if (pci_pcie_type(parent) == PCI_EXP_TYPE_ROOT_PORT)
1969                 return 1;
1970
1971         /*
1972          * PCIe downstream ports are bridges that normally lead to only a
1973          * device 0, but if PCI_SCAN_ALL_PCIE_DEVS is set, scan all
1974          * possible devices, not just device 0.  See PCIe spec r3.0,
1975          * sec 7.3.1.
1976          */
1977         if (parent->has_secondary_link &&
1978             !pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS))
1979                 return 1;
1980         return 0;
1981 }
1982
1983 /**
1984  * pci_scan_slot - scan a PCI slot on a bus for devices.
1985  * @bus: PCI bus to scan
1986  * @devfn: slot number to scan (must have zero function.)
1987  *
1988  * Scan a PCI slot on the specified PCI bus for devices, adding
1989  * discovered devices to the @bus->devices list.  New devices
1990  * will not have is_added set.
1991  *
1992  * Returns the number of new devices found.
1993  */
1994 int pci_scan_slot(struct pci_bus *bus, int devfn)
1995 {
1996         unsigned fn, nr = 0;
1997         struct pci_dev *dev;
1998
1999         if (only_one_child(bus) && (devfn > 0))
2000                 return 0; /* Already scanned the entire slot */
2001
2002         dev = pci_scan_single_device(bus, devfn);
2003         if (!dev)
2004                 return 0;
2005         if (!dev->is_added)
2006                 nr++;
2007
2008         for (fn = next_fn(bus, dev, 0); fn > 0; fn = next_fn(bus, dev, fn)) {
2009                 dev = pci_scan_single_device(bus, devfn + fn);
2010                 if (dev) {
2011                         if (!dev->is_added)
2012                                 nr++;
2013                         dev->multifunction = 1;
2014                 }
2015         }
2016
2017         /* only one slot has pcie device */
2018         if (bus->self && nr)
2019                 pcie_aspm_init_link_state(bus->self);
2020
2021         return nr;
2022 }
2023 EXPORT_SYMBOL(pci_scan_slot);
2024
2025 static int pcie_find_smpss(struct pci_dev *dev, void *data)
2026 {
2027         u8 *smpss = data;
2028
2029         if (!pci_is_pcie(dev))
2030                 return 0;
2031
2032         /*
2033          * We don't have a way to change MPS settings on devices that have
2034          * drivers attached.  A hot-added device might support only the minimum
2035          * MPS setting (MPS=128).  Therefore, if the fabric contains a bridge
2036          * where devices may be hot-added, we limit the fabric MPS to 128 so
2037          * hot-added devices will work correctly.
2038          *
2039          * However, if we hot-add a device to a slot directly below a Root
2040          * Port, it's impossible for there to be other existing devices below
2041          * the port.  We don't limit the MPS in this case because we can
2042          * reconfigure MPS on both the Root Port and the hot-added device,
2043          * and there are no other devices involved.
2044          *
2045          * Note that this PCIE_BUS_SAFE path assumes no peer-to-peer DMA.
2046          */
2047         if (dev->is_hotplug_bridge &&
2048             pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT)
2049                 *smpss = 0;
2050
2051         if (*smpss > dev->pcie_mpss)
2052                 *smpss = dev->pcie_mpss;
2053
2054         return 0;
2055 }
2056
2057 static void pcie_write_mps(struct pci_dev *dev, int mps)
2058 {
2059         int rc;
2060
2061         if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
2062                 mps = 128 << dev->pcie_mpss;
2063
2064                 if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT &&
2065                     dev->bus->self)
2066                         /* For "Performance", the assumption is made that
2067                          * downstream communication will never be larger than
2068                          * the MRRS.  So, the MPS only needs to be configured
2069                          * for the upstream communication.  This being the case,
2070                          * walk from the top down and set the MPS of the child
2071                          * to that of the parent bus.
2072                          *
2073                          * Configure the device MPS with the smaller of the
2074                          * device MPSS or the bridge MPS (which is assumed to be
2075                          * properly configured at this point to the largest
2076                          * allowable MPS based on its parent bus).
2077                          */
2078                         mps = min(mps, pcie_get_mps(dev->bus->self));
2079         }
2080
2081         rc = pcie_set_mps(dev, mps);
2082         if (rc)
2083                 dev_err(&dev->dev, "Failed attempting to set the MPS\n");
2084 }
2085
2086 static void pcie_write_mrrs(struct pci_dev *dev)
2087 {
2088         int rc, mrrs;
2089
2090         /* In the "safe" case, do not configure the MRRS.  There appear to be
2091          * issues with setting MRRS to 0 on a number of devices.
2092          */
2093         if (pcie_bus_config != PCIE_BUS_PERFORMANCE)
2094                 return;
2095
2096         /* For Max performance, the MRRS must be set to the largest supported
2097          * value.  However, it cannot be configured larger than the MPS the
2098          * device or the bus can support.  This should already be properly
2099          * configured by a prior call to pcie_write_mps.
2100          */
2101         mrrs = pcie_get_mps(dev);
2102
2103         /* MRRS is a R/W register.  Invalid values can be written, but a
2104          * subsequent read will verify if the value is acceptable or not.
2105          * If the MRRS value provided is not acceptable (e.g., too large),
2106          * shrink the value until it is acceptable to the HW.
2107          */
2108         while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
2109                 rc = pcie_set_readrq(dev, mrrs);
2110                 if (!rc)
2111                         break;
2112
2113                 dev_warn(&dev->dev, "Failed attempting to set the MRRS\n");
2114                 mrrs /= 2;
2115         }
2116
2117         if (mrrs < 128)
2118                 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");
2119 }
2120
2121 static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
2122 {
2123         int mps, orig_mps;
2124
2125         if (!pci_is_pcie(dev))
2126                 return 0;
2127
2128         if (pcie_bus_config == PCIE_BUS_TUNE_OFF ||
2129             pcie_bus_config == PCIE_BUS_DEFAULT)
2130                 return 0;
2131
2132         mps = 128 << *(u8 *)data;
2133         orig_mps = pcie_get_mps(dev);
2134
2135         pcie_write_mps(dev, mps);
2136         pcie_write_mrrs(dev);
2137
2138         dev_info(&dev->dev, "Max Payload Size set to %4d/%4d (was %4d), Max Read Rq %4d\n",
2139                  pcie_get_mps(dev), 128 << dev->pcie_mpss,
2140                  orig_mps, pcie_get_readrq(dev));
2141
2142         return 0;
2143 }
2144
2145 /* pcie_bus_configure_settings requires that pci_walk_bus work in a top-down,
2146  * parents then children fashion.  If this changes, then this code will not
2147  * work as designed.
2148  */
2149 void pcie_bus_configure_settings(struct pci_bus *bus)
2150 {
2151         u8 smpss = 0;
2152
2153         if (!bus->self)
2154                 return;
2155
2156         if (!pci_is_pcie(bus->self))
2157                 return;
2158
2159         /* FIXME - Peer to peer DMA is possible, though the endpoint would need
2160          * to be aware of the MPS of the destination.  To work around this,
2161          * simply force the MPS of the entire system to the smallest possible.
2162          */
2163         if (pcie_bus_config == PCIE_BUS_PEER2PEER)
2164                 smpss = 0;
2165
2166         if (pcie_bus_config == PCIE_BUS_SAFE) {
2167                 smpss = bus->self->pcie_mpss;
2168
2169                 pcie_find_smpss(bus->self, &smpss);
2170                 pci_walk_bus(bus, pcie_find_smpss, &smpss);
2171         }
2172
2173         pcie_bus_configure_set(bus->self, &smpss);
2174         pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
2175 }
2176 EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
2177
2178 unsigned int pci_scan_child_bus(struct pci_bus *bus)
2179 {
2180         unsigned int devfn, pass, max = bus->busn_res.start;
2181         struct pci_dev *dev;
2182
2183         dev_dbg(&bus->dev, "scanning bus\n");
2184
2185         /* Go find them, Rover! */
2186         for (devfn = 0; devfn < 0x100; devfn += 8)
2187                 pci_scan_slot(bus, devfn);
2188
2189         /* Reserve buses for SR-IOV capability. */
2190         max += pci_iov_bus_range(bus);
2191
2192         /*
2193          * After performing arch-dependent fixup of the bus, look behind
2194          * all PCI-to-PCI bridges on this bus.
2195          */
2196         if (!bus->is_added) {
2197                 dev_dbg(&bus->dev, "fixups for bus\n");
2198                 pcibios_fixup_bus(bus);
2199                 bus->is_added = 1;
2200         }
2201
2202         for (pass = 0; pass < 2; pass++)
2203                 list_for_each_entry(dev, &bus->devices, bus_list) {
2204                         if (pci_is_bridge(dev))
2205                                 max = pci_scan_bridge(bus, dev, max, pass);
2206                 }
2207
2208         /*
2209          * Make sure a hotplug bridge has at least the minimum requested
2210          * number of buses.
2211          */
2212         if (bus->self && bus->self->is_hotplug_bridge && pci_hotplug_bus_size) {
2213                 if (max - bus->busn_res.start < pci_hotplug_bus_size - 1)
2214                         max = bus->busn_res.start + pci_hotplug_bus_size - 1;
2215         }
2216
2217         /*
2218          * We've scanned the bus and so we know all about what's on
2219          * the other side of any bridges that may be on this bus plus
2220          * any devices.
2221          *
2222          * Return how far we've got finding sub-buses.
2223          */
2224         dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
2225         return max;
2226 }
2227 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
2228
2229 /**
2230  * pcibios_root_bridge_prepare - Platform-specific host bridge setup.
2231  * @bridge: Host bridge to set up.
2232  *
2233  * Default empty implementation.  Replace with an architecture-specific setup
2234  * routine, if necessary.
2235  */
2236 int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
2237 {
2238         return 0;
2239 }
2240
2241 void __weak pcibios_add_bus(struct pci_bus *bus)
2242 {
2243 }
2244
2245 void __weak pcibios_remove_bus(struct pci_bus *bus)
2246 {
2247 }
2248
2249 static struct pci_bus *pci_create_root_bus_msi(struct device *parent,
2250                 int bus, struct pci_ops *ops, void *sysdata,
2251                 struct list_head *resources, struct msi_controller *msi)
2252 {
2253         int error;
2254         struct pci_host_bridge *bridge;
2255
2256         bridge = pci_alloc_host_bridge(0);
2257         if (!bridge)
2258                 return NULL;
2259
2260         bridge->dev.parent = parent;
2261         bridge->dev.release = pci_release_host_bridge_dev;
2262
2263         list_splice_init(resources, &bridge->windows);
2264         bridge->sysdata = sysdata;
2265         bridge->busnr = bus;
2266         bridge->ops = ops;
2267         bridge->msi = msi;
2268
2269         error = pci_register_host_bridge(bridge);
2270         if (error < 0)
2271                 goto err_out;
2272
2273         return bridge->bus;
2274
2275 err_out:
2276         kfree(bridge);
2277         return NULL;
2278 }
2279
2280 struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
2281                 struct pci_ops *ops, void *sysdata, struct list_head *resources)
2282 {
2283         return pci_create_root_bus_msi(parent, bus, ops, sysdata, resources,
2284                                        NULL);
2285 }
2286 EXPORT_SYMBOL_GPL(pci_create_root_bus);
2287
2288 int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
2289 {
2290         struct resource *res = &b->busn_res;
2291         struct resource *parent_res, *conflict;
2292
2293         res->start = bus;
2294         res->end = bus_max;
2295         res->flags = IORESOURCE_BUS;
2296
2297         if (!pci_is_root_bus(b))
2298                 parent_res = &b->parent->busn_res;
2299         else {
2300                 parent_res = get_pci_domain_busn_res(pci_domain_nr(b));
2301                 res->flags |= IORESOURCE_PCI_FIXED;
2302         }
2303
2304         conflict = request_resource_conflict(parent_res, res);
2305
2306         if (conflict)
2307                 dev_printk(KERN_DEBUG, &b->dev,
2308                            "busn_res: can not insert %pR under %s%pR (conflicts with %s %pR)\n",
2309                             res, pci_is_root_bus(b) ? "domain " : "",
2310                             parent_res, conflict->name, conflict);
2311
2312         return conflict == NULL;
2313 }
2314
2315 int pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
2316 {
2317         struct resource *res = &b->busn_res;
2318         struct resource old_res = *res;
2319         resource_size_t size;
2320         int ret;
2321
2322         if (res->start > bus_max)
2323                 return -EINVAL;
2324
2325         size = bus_max - res->start + 1;
2326         ret = adjust_resource(res, res->start, size);
2327         dev_printk(KERN_DEBUG, &b->dev,
2328                         "busn_res: %pR end %s updated to %02x\n",
2329                         &old_res, ret ? "can not be" : "is", bus_max);
2330
2331         if (!ret && !res->parent)
2332                 pci_bus_insert_busn_res(b, res->start, res->end);
2333
2334         return ret;
2335 }
2336
2337 void pci_bus_release_busn_res(struct pci_bus *b)
2338 {
2339         struct resource *res = &b->busn_res;
2340         int ret;
2341
2342         if (!res->flags || !res->parent)
2343                 return;
2344
2345         ret = release_resource(res);
2346         dev_printk(KERN_DEBUG, &b->dev,
2347                         "busn_res: %pR %s released\n",
2348                         res, ret ? "can not be" : "is");
2349 }
2350
2351 struct pci_bus *pci_scan_root_bus_msi(struct device *parent, int bus,
2352                 struct pci_ops *ops, void *sysdata,
2353                 struct list_head *resources, struct msi_controller *msi)
2354 {
2355         struct resource_entry *window;
2356         bool found = false;
2357         struct pci_bus *b;
2358         int max;
2359
2360         resource_list_for_each_entry(window, resources)
2361                 if (window->res->flags & IORESOURCE_BUS) {
2362                         found = true;
2363                         break;
2364                 }
2365
2366         b = pci_create_root_bus_msi(parent, bus, ops, sysdata, resources, msi);
2367         if (!b)
2368                 return NULL;
2369
2370         if (!found) {
2371                 dev_info(&b->dev,
2372                  "No busn resource found for root bus, will use [bus %02x-ff]\n",
2373                         bus);
2374                 pci_bus_insert_busn_res(b, bus, 255);
2375         }
2376
2377         max = pci_scan_child_bus(b);
2378
2379         if (!found)
2380                 pci_bus_update_busn_res_end(b, max);
2381
2382         return b;
2383 }
2384
2385 struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
2386                 struct pci_ops *ops, void *sysdata, struct list_head *resources)
2387 {
2388         return pci_scan_root_bus_msi(parent, bus, ops, sysdata, resources,
2389                                      NULL);
2390 }
2391 EXPORT_SYMBOL(pci_scan_root_bus);
2392
2393 struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
2394                                         void *sysdata)
2395 {
2396         LIST_HEAD(resources);
2397         struct pci_bus *b;
2398
2399         pci_add_resource(&resources, &ioport_resource);
2400         pci_add_resource(&resources, &iomem_resource);
2401         pci_add_resource(&resources, &busn_resource);
2402         b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
2403         if (b) {
2404                 pci_scan_child_bus(b);
2405         } else {
2406                 pci_free_resource_list(&resources);
2407         }
2408         return b;
2409 }
2410 EXPORT_SYMBOL(pci_scan_bus);
2411
2412 /**
2413  * pci_rescan_bus_bridge_resize - scan a PCI bus for devices.
2414  * @bridge: PCI bridge for the bus to scan
2415  *
2416  * Scan a PCI bus and child buses for new devices, add them,
2417  * and enable them, resizing bridge mmio/io resource if necessary
2418  * and possible.  The caller must ensure the child devices are already
2419  * removed for resizing to occur.
2420  *
2421  * Returns the max number of subordinate bus discovered.
2422  */
2423 unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
2424 {
2425         unsigned int max;
2426         struct pci_bus *bus = bridge->subordinate;
2427
2428         max = pci_scan_child_bus(bus);
2429
2430         pci_assign_unassigned_bridge_resources(bridge);
2431
2432         pci_bus_add_devices(bus);
2433
2434         return max;
2435 }
2436
2437 /**
2438  * pci_rescan_bus - scan a PCI bus for devices.
2439  * @bus: PCI bus to scan
2440  *
2441  * Scan a PCI bus and child buses for new devices, adds them,
2442  * and enables them.
2443  *
2444  * Returns the max number of subordinate bus discovered.
2445  */
2446 unsigned int pci_rescan_bus(struct pci_bus *bus)
2447 {
2448         unsigned int max;
2449
2450         max = pci_scan_child_bus(bus);
2451         pci_assign_unassigned_bus_resources(bus);
2452         pci_bus_add_devices(bus);
2453
2454         return max;
2455 }
2456 EXPORT_SYMBOL_GPL(pci_rescan_bus);
2457
2458 /*
2459  * pci_rescan_bus(), pci_rescan_bus_bridge_resize() and PCI device removal
2460  * routines should always be executed under this mutex.
2461  */
2462 static DEFINE_MUTEX(pci_rescan_remove_lock);
2463
2464 void pci_lock_rescan_remove(void)
2465 {
2466         mutex_lock(&pci_rescan_remove_lock);
2467 }
2468 EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);
2469
2470 void pci_unlock_rescan_remove(void)
2471 {
2472         mutex_unlock(&pci_rescan_remove_lock);
2473 }
2474 EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);
2475
2476 static int __init pci_sort_bf_cmp(const struct device *d_a,
2477                                   const struct device *d_b)
2478 {
2479         const struct pci_dev *a = to_pci_dev(d_a);
2480         const struct pci_dev *b = to_pci_dev(d_b);
2481
2482         if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
2483         else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
2484
2485         if      (a->bus->number < b->bus->number) return -1;
2486         else if (a->bus->number > b->bus->number) return  1;
2487
2488         if      (a->devfn < b->devfn) return -1;
2489         else if (a->devfn > b->devfn) return  1;
2490
2491         return 0;
2492 }
2493
2494 void __init pci_sort_breadthfirst(void)
2495 {
2496         bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
2497 }