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