Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[deliverable/linux.git] / drivers / pci / probe.c
CommitLineData
1da177e4
LT
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/slab.h>
10#include <linux/module.h>
11#include <linux/cpumask.h>
7d715a6c 12#include <linux/pci-aspm.h>
284f5f9d 13#include <asm-generic/pci-bridge.h>
bc56b9e0 14#include "pci.h"
1da177e4
LT
15
16#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
17#define CARDBUS_RESERVE_BUSNR 3
1da177e4 18
67cdc827
YL
19struct resource busn_resource = {
20 .name = "PCI busn",
21 .start = 0,
22 .end = 255,
23 .flags = IORESOURCE_BUS,
24};
25
1da177e4
LT
26/* Ugh. Need to stop exporting this to modules. */
27LIST_HEAD(pci_root_buses);
28EXPORT_SYMBOL(pci_root_buses);
29
5cc62c20
YL
30static LIST_HEAD(pci_domain_busn_res_list);
31
32struct pci_domain_busn_res {
33 struct list_head list;
34 struct resource res;
35 int domain_nr;
36};
37
38static struct resource *get_pci_domain_busn_res(int domain_nr)
39{
40 struct pci_domain_busn_res *r;
41
42 list_for_each_entry(r, &pci_domain_busn_res_list, list)
43 if (r->domain_nr == domain_nr)
44 return &r->res;
45
46 r = kzalloc(sizeof(*r), GFP_KERNEL);
47 if (!r)
48 return NULL;
49
50 r->domain_nr = domain_nr;
51 r->res.start = 0;
52 r->res.end = 0xff;
53 r->res.flags = IORESOURCE_BUS | IORESOURCE_PCI_FIXED;
54
55 list_add_tail(&r->list, &pci_domain_busn_res_list);
56
57 return &r->res;
58}
59
70308923
GKH
60static int find_anything(struct device *dev, void *data)
61{
62 return 1;
63}
1da177e4 64
ed4aaadb
ZY
65/*
66 * Some device drivers need know if pci is initiated.
67 * Basically, we think pci is not initiated when there
70308923 68 * is no device to be found on the pci_bus_type.
ed4aaadb
ZY
69 */
70int no_pci_devices(void)
71{
70308923
GKH
72 struct device *dev;
73 int no_devices;
ed4aaadb 74
70308923
GKH
75 dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
76 no_devices = (dev == NULL);
77 put_device(dev);
78 return no_devices;
79}
ed4aaadb
ZY
80EXPORT_SYMBOL(no_pci_devices);
81
1da177e4
LT
82/*
83 * PCI Bus Class
84 */
fd7d1ced 85static void release_pcibus_dev(struct device *dev)
1da177e4 86{
fd7d1ced 87 struct pci_bus *pci_bus = to_pci_bus(dev);
1da177e4
LT
88
89 if (pci_bus->bridge)
90 put_device(pci_bus->bridge);
2fe2abf8 91 pci_bus_remove_resources(pci_bus);
98d9f30c 92 pci_release_bus_of_node(pci_bus);
1da177e4
LT
93 kfree(pci_bus);
94}
95
96static struct class pcibus_class = {
97 .name = "pci_bus",
fd7d1ced 98 .dev_release = &release_pcibus_dev,
56039e65 99 .dev_groups = pcibus_groups,
1da177e4
LT
100};
101
102static int __init pcibus_class_init(void)
103{
104 return class_register(&pcibus_class);
105}
106postcore_initcall(pcibus_class_init);
107
6ac665c6 108static u64 pci_size(u64 base, u64 maxbase, u64 mask)
1da177e4 109{
6ac665c6 110 u64 size = mask & maxbase; /* Find the significant bits */
1da177e4
LT
111 if (!size)
112 return 0;
113
114 /* Get the lowest of them to find the decode size, and
115 from that the extent. */
116 size = (size & ~(size-1)) - 1;
117
118 /* base == maxbase can be valid only if the BAR has
119 already been programmed with all 1s. */
120 if (base == maxbase && ((base | size) & mask) != mask)
121 return 0;
122
123 return size;
124}
125
28c6821a 126static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
6ac665c6 127{
8d6a6a47 128 u32 mem_type;
28c6821a 129 unsigned long flags;
8d6a6a47 130
6ac665c6 131 if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
28c6821a
BH
132 flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
133 flags |= IORESOURCE_IO;
134 return flags;
6ac665c6 135 }
07eddf3d 136
28c6821a
BH
137 flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
138 flags |= IORESOURCE_MEM;
139 if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
140 flags |= IORESOURCE_PREFETCH;
07eddf3d 141
8d6a6a47
BH
142 mem_type = bar & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
143 switch (mem_type) {
144 case PCI_BASE_ADDRESS_MEM_TYPE_32:
145 break;
146 case PCI_BASE_ADDRESS_MEM_TYPE_1M:
0ff9514b 147 /* 1M mem BAR treated as 32-bit BAR */
8d6a6a47
BH
148 break;
149 case PCI_BASE_ADDRESS_MEM_TYPE_64:
28c6821a
BH
150 flags |= IORESOURCE_MEM_64;
151 break;
8d6a6a47 152 default:
0ff9514b 153 /* mem unknown type treated as 32-bit BAR */
8d6a6a47
BH
154 break;
155 }
28c6821a 156 return flags;
07eddf3d
YL
157}
158
808e34e2
ZK
159#define PCI_COMMAND_DECODE_ENABLE (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)
160
0b400c7e
YZ
161/**
162 * pci_read_base - read a PCI BAR
163 * @dev: the PCI device
164 * @type: type of the BAR
165 * @res: resource buffer to be filled in
166 * @pos: BAR position in the config space
167 *
168 * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
6ac665c6 169 */
0b400c7e 170int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
6ac665c6 171 struct resource *res, unsigned int pos)
07eddf3d 172{
6ac665c6 173 u32 l, sz, mask;
253d2e54 174 u16 orig_cmd;
cf4d1cf5 175 struct pci_bus_region region, inverted_region;
0ff9514b 176 bool bar_too_big = false, bar_disabled = false;
6ac665c6 177
1ed67439 178 mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
6ac665c6 179
0ff9514b 180 /* No printks while decoding is disabled! */
253d2e54
JP
181 if (!dev->mmio_always_on) {
182 pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
808e34e2
ZK
183 if (orig_cmd & PCI_COMMAND_DECODE_ENABLE) {
184 pci_write_config_word(dev, PCI_COMMAND,
185 orig_cmd & ~PCI_COMMAND_DECODE_ENABLE);
186 }
253d2e54
JP
187 }
188
6ac665c6
MW
189 res->name = pci_name(dev);
190
191 pci_read_config_dword(dev, pos, &l);
1ed67439 192 pci_write_config_dword(dev, pos, l | mask);
6ac665c6
MW
193 pci_read_config_dword(dev, pos, &sz);
194 pci_write_config_dword(dev, pos, l);
195
196 /*
197 * All bits set in sz means the device isn't working properly.
45aa23b4
BH
198 * If the BAR isn't implemented, all bits must be 0. If it's a
199 * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
200 * 1 must be clear.
6ac665c6 201 */
45aa23b4 202 if (!sz || sz == 0xffffffff)
6ac665c6
MW
203 goto fail;
204
205 /*
206 * I don't know how l can have all bits set. Copied from old code.
207 * Maybe it fixes a bug on some ancient platform.
208 */
209 if (l == 0xffffffff)
210 l = 0;
211
212 if (type == pci_bar_unknown) {
28c6821a
BH
213 res->flags = decode_bar(dev, l);
214 res->flags |= IORESOURCE_SIZEALIGN;
215 if (res->flags & IORESOURCE_IO) {
6ac665c6 216 l &= PCI_BASE_ADDRESS_IO_MASK;
5aceca9d 217 mask = PCI_BASE_ADDRESS_IO_MASK & (u32) IO_SPACE_LIMIT;
6ac665c6
MW
218 } else {
219 l &= PCI_BASE_ADDRESS_MEM_MASK;
220 mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
221 }
222 } else {
223 res->flags |= (l & IORESOURCE_ROM_ENABLE);
224 l &= PCI_ROM_ADDRESS_MASK;
225 mask = (u32)PCI_ROM_ADDRESS_MASK;
226 }
227
28c6821a 228 if (res->flags & IORESOURCE_MEM_64) {
6ac665c6
MW
229 u64 l64 = l;
230 u64 sz64 = sz;
231 u64 mask64 = mask | (u64)~0 << 32;
232
233 pci_read_config_dword(dev, pos + 4, &l);
234 pci_write_config_dword(dev, pos + 4, ~0);
235 pci_read_config_dword(dev, pos + 4, &sz);
236 pci_write_config_dword(dev, pos + 4, l);
237
238 l64 |= ((u64)l << 32);
239 sz64 |= ((u64)sz << 32);
240
241 sz64 = pci_size(l64, sz64, mask64);
242
243 if (!sz64)
244 goto fail;
245
cc5499c3 246 if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
0ff9514b 247 bar_too_big = true;
6ac665c6 248 goto fail;
c7dabef8
BH
249 }
250
c7dabef8 251 if ((sizeof(resource_size_t) < 8) && l) {
6ac665c6
MW
252 /* Address above 32-bit boundary; disable the BAR */
253 pci_write_config_dword(dev, pos, 0);
254 pci_write_config_dword(dev, pos + 4, 0);
5bfa14ed
BH
255 region.start = 0;
256 region.end = sz64;
0ff9514b 257 bar_disabled = true;
6ac665c6 258 } else {
5bfa14ed
BH
259 region.start = l64;
260 region.end = l64 + sz64;
6ac665c6
MW
261 }
262 } else {
45aa23b4 263 sz = pci_size(l, sz, mask);
6ac665c6 264
45aa23b4 265 if (!sz)
6ac665c6
MW
266 goto fail;
267
5bfa14ed
BH
268 region.start = l;
269 region.end = l + sz;
6ac665c6
MW
270 }
271
96ddef25 272 pcibios_bus_to_resource(dev, res, &region);
cf4d1cf5
KH
273 pcibios_resource_to_bus(dev, &inverted_region, res);
274
275 /*
276 * If "A" is a BAR value (a bus address), "bus_to_resource(A)" is
277 * the corresponding resource address (the physical address used by
278 * the CPU. Converting that resource address back to a bus address
279 * should yield the original BAR value:
280 *
281 * resource_to_bus(bus_to_resource(A)) == A
282 *
283 * If it doesn't, CPU accesses to "bus_to_resource(A)" will not
284 * be claimed by the device.
285 */
286 if (inverted_region.start != region.start) {
287 dev_info(&dev->dev, "reg 0x%x: initial BAR value %pa invalid; forcing reassignment\n",
288 pos, &region.start);
289 res->flags |= IORESOURCE_UNSET;
290 res->end -= res->start;
291 res->start = 0;
292 }
96ddef25 293
0ff9514b
BH
294 goto out;
295
296
297fail:
298 res->flags = 0;
299out:
808e34e2
ZK
300 if (!dev->mmio_always_on &&
301 (orig_cmd & PCI_COMMAND_DECODE_ENABLE))
bbffe435
BH
302 pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
303
0ff9514b 304 if (bar_too_big)
33963e30 305 dev_err(&dev->dev, "reg 0x%x: can't handle 64-bit BAR\n", pos);
0ff9514b 306 if (res->flags && !bar_disabled)
33963e30 307 dev_printk(KERN_DEBUG, &dev->dev, "reg 0x%x: %pR\n", pos, res);
0ff9514b 308
28c6821a 309 return (res->flags & IORESOURCE_MEM_64) ? 1 : 0;
07eddf3d
YL
310}
311
1da177e4
LT
312static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
313{
6ac665c6 314 unsigned int pos, reg;
07eddf3d 315
6ac665c6
MW
316 for (pos = 0; pos < howmany; pos++) {
317 struct resource *res = &dev->resource[pos];
1da177e4 318 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
6ac665c6 319 pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
1da177e4 320 }
6ac665c6 321
1da177e4 322 if (rom) {
6ac665c6 323 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
1da177e4 324 dev->rom_base_reg = rom;
6ac665c6
MW
325 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
326 IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
327 IORESOURCE_SIZEALIGN;
328 __pci_read_base(dev, pci_bar_mem32, res, rom);
1da177e4
LT
329 }
330}
331
15856ad5 332static void pci_read_bridge_io(struct pci_bus *child)
1da177e4
LT
333{
334 struct pci_dev *dev = child->self;
335 u8 io_base_lo, io_limit_lo;
2b28ae19 336 unsigned long io_mask, io_granularity, base, limit;
5bfa14ed 337 struct pci_bus_region region;
2b28ae19
BH
338 struct resource *res;
339
340 io_mask = PCI_IO_RANGE_MASK;
341 io_granularity = 0x1000;
342 if (dev->io_window_1k) {
343 /* Support 1K I/O space granularity */
344 io_mask = PCI_IO_1K_RANGE_MASK;
345 io_granularity = 0x400;
346 }
1da177e4 347
1da177e4
LT
348 res = child->resource[0];
349 pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
350 pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
2b28ae19
BH
351 base = (io_base_lo & io_mask) << 8;
352 limit = (io_limit_lo & io_mask) << 8;
1da177e4
LT
353
354 if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
355 u16 io_base_hi, io_limit_hi;
8f38eaca 356
1da177e4
LT
357 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
358 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
8f38eaca
BH
359 base |= ((unsigned long) io_base_hi << 16);
360 limit |= ((unsigned long) io_limit_hi << 16);
1da177e4
LT
361 }
362
5dde383e 363 if (base <= limit) {
1da177e4 364 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
5bfa14ed 365 region.start = base;
2b28ae19
BH
366 region.end = limit + io_granularity - 1;
367 pcibios_bus_to_resource(dev, res, &region);
c7dabef8 368 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4 369 }
fa27b2d1
BH
370}
371
15856ad5 372static void pci_read_bridge_mmio(struct pci_bus *child)
fa27b2d1
BH
373{
374 struct pci_dev *dev = child->self;
375 u16 mem_base_lo, mem_limit_lo;
376 unsigned long base, limit;
5bfa14ed 377 struct pci_bus_region region;
fa27b2d1 378 struct resource *res;
1da177e4
LT
379
380 res = child->resource[1];
381 pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
382 pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
8f38eaca
BH
383 base = ((unsigned long) mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
384 limit = ((unsigned long) mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
5dde383e 385 if (base <= limit) {
1da177e4 386 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
5bfa14ed
BH
387 region.start = base;
388 region.end = limit + 0xfffff;
fb127cb9 389 pcibios_bus_to_resource(dev, res, &region);
c7dabef8 390 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4 391 }
fa27b2d1
BH
392}
393
15856ad5 394static void pci_read_bridge_mmio_pref(struct pci_bus *child)
fa27b2d1
BH
395{
396 struct pci_dev *dev = child->self;
397 u16 mem_base_lo, mem_limit_lo;
398 unsigned long base, limit;
5bfa14ed 399 struct pci_bus_region region;
fa27b2d1 400 struct resource *res;
1da177e4
LT
401
402 res = child->resource[2];
403 pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
404 pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
8f38eaca
BH
405 base = ((unsigned long) mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
406 limit = ((unsigned long) mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
1da177e4
LT
407
408 if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
409 u32 mem_base_hi, mem_limit_hi;
8f38eaca 410
1da177e4
LT
411 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
412 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
413
414 /*
415 * Some bridges set the base > limit by default, and some
416 * (broken) BIOSes do not initialize them. If we find
417 * this, just assume they are not being used.
418 */
419 if (mem_base_hi <= mem_limit_hi) {
420#if BITS_PER_LONG == 64
8f38eaca
BH
421 base |= ((unsigned long) mem_base_hi) << 32;
422 limit |= ((unsigned long) mem_limit_hi) << 32;
1da177e4
LT
423#else
424 if (mem_base_hi || mem_limit_hi) {
80ccba11
BH
425 dev_err(&dev->dev, "can't handle 64-bit "
426 "address space for bridge\n");
1da177e4
LT
427 return;
428 }
429#endif
430 }
431 }
5dde383e 432 if (base <= limit) {
1f82de10
YL
433 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
434 IORESOURCE_MEM | IORESOURCE_PREFETCH;
435 if (res->flags & PCI_PREF_RANGE_TYPE_64)
436 res->flags |= IORESOURCE_MEM_64;
5bfa14ed
BH
437 region.start = base;
438 region.end = limit + 0xfffff;
fb127cb9 439 pcibios_bus_to_resource(dev, res, &region);
c7dabef8 440 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4
LT
441 }
442}
443
15856ad5 444void pci_read_bridge_bases(struct pci_bus *child)
fa27b2d1
BH
445{
446 struct pci_dev *dev = child->self;
2fe2abf8 447 struct resource *res;
fa27b2d1
BH
448 int i;
449
450 if (pci_is_root_bus(child)) /* It's a host bus, nothing to read */
451 return;
452
b918c62e
YL
453 dev_info(&dev->dev, "PCI bridge to %pR%s\n",
454 &child->busn_res,
fa27b2d1
BH
455 dev->transparent ? " (subtractive decode)" : "");
456
2fe2abf8
BH
457 pci_bus_remove_resources(child);
458 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
459 child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
460
fa27b2d1
BH
461 pci_read_bridge_io(child);
462 pci_read_bridge_mmio(child);
463 pci_read_bridge_mmio_pref(child);
2adf7516
BH
464
465 if (dev->transparent) {
2fe2abf8
BH
466 pci_bus_for_each_resource(child->parent, res, i) {
467 if (res) {
468 pci_bus_add_resource(child, res,
469 PCI_SUBTRACTIVE_DECODE);
2adf7516
BH
470 dev_printk(KERN_DEBUG, &dev->dev,
471 " bridge window %pR (subtractive decode)\n",
2fe2abf8
BH
472 res);
473 }
2adf7516
BH
474 }
475 }
fa27b2d1
BH
476}
477
05013486 478static struct pci_bus *pci_alloc_bus(void)
1da177e4
LT
479{
480 struct pci_bus *b;
481
f5afe806 482 b = kzalloc(sizeof(*b), GFP_KERNEL);
05013486
BH
483 if (!b)
484 return NULL;
485
486 INIT_LIST_HEAD(&b->node);
487 INIT_LIST_HEAD(&b->children);
488 INIT_LIST_HEAD(&b->devices);
489 INIT_LIST_HEAD(&b->slots);
490 INIT_LIST_HEAD(&b->resources);
491 b->max_bus_speed = PCI_SPEED_UNKNOWN;
492 b->cur_bus_speed = PCI_SPEED_UNKNOWN;
1da177e4
LT
493 return b;
494}
495
70efde2a
JL
496static void pci_release_host_bridge_dev(struct device *dev)
497{
498 struct pci_host_bridge *bridge = to_pci_host_bridge(dev);
499
500 if (bridge->release_fn)
501 bridge->release_fn(bridge);
502
503 pci_free_resource_list(&bridge->windows);
504
505 kfree(bridge);
506}
507
7b543663
YL
508static struct pci_host_bridge *pci_alloc_host_bridge(struct pci_bus *b)
509{
510 struct pci_host_bridge *bridge;
511
512 bridge = kzalloc(sizeof(*bridge), GFP_KERNEL);
05013486
BH
513 if (!bridge)
514 return NULL;
7b543663 515
05013486
BH
516 INIT_LIST_HEAD(&bridge->windows);
517 bridge->bus = b;
7b543663
YL
518 return bridge;
519}
520
343e51ae 521const unsigned char pcix_bus_speed[] = {
9be60ca0
MW
522 PCI_SPEED_UNKNOWN, /* 0 */
523 PCI_SPEED_66MHz_PCIX, /* 1 */
524 PCI_SPEED_100MHz_PCIX, /* 2 */
525 PCI_SPEED_133MHz_PCIX, /* 3 */
526 PCI_SPEED_UNKNOWN, /* 4 */
527 PCI_SPEED_66MHz_PCIX_ECC, /* 5 */
528 PCI_SPEED_100MHz_PCIX_ECC, /* 6 */
529 PCI_SPEED_133MHz_PCIX_ECC, /* 7 */
530 PCI_SPEED_UNKNOWN, /* 8 */
531 PCI_SPEED_66MHz_PCIX_266, /* 9 */
532 PCI_SPEED_100MHz_PCIX_266, /* A */
533 PCI_SPEED_133MHz_PCIX_266, /* B */
534 PCI_SPEED_UNKNOWN, /* C */
535 PCI_SPEED_66MHz_PCIX_533, /* D */
536 PCI_SPEED_100MHz_PCIX_533, /* E */
537 PCI_SPEED_133MHz_PCIX_533 /* F */
538};
539
343e51ae 540const unsigned char pcie_link_speed[] = {
3749c51a
MW
541 PCI_SPEED_UNKNOWN, /* 0 */
542 PCIE_SPEED_2_5GT, /* 1 */
543 PCIE_SPEED_5_0GT, /* 2 */
9dfd97fe 544 PCIE_SPEED_8_0GT, /* 3 */
3749c51a
MW
545 PCI_SPEED_UNKNOWN, /* 4 */
546 PCI_SPEED_UNKNOWN, /* 5 */
547 PCI_SPEED_UNKNOWN, /* 6 */
548 PCI_SPEED_UNKNOWN, /* 7 */
549 PCI_SPEED_UNKNOWN, /* 8 */
550 PCI_SPEED_UNKNOWN, /* 9 */
551 PCI_SPEED_UNKNOWN, /* A */
552 PCI_SPEED_UNKNOWN, /* B */
553 PCI_SPEED_UNKNOWN, /* C */
554 PCI_SPEED_UNKNOWN, /* D */
555 PCI_SPEED_UNKNOWN, /* E */
556 PCI_SPEED_UNKNOWN /* F */
557};
558
559void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
560{
231afea1 561 bus->cur_bus_speed = pcie_link_speed[linksta & PCI_EXP_LNKSTA_CLS];
3749c51a
MW
562}
563EXPORT_SYMBOL_GPL(pcie_update_link_speed);
564
45b4cdd5
MW
565static unsigned char agp_speeds[] = {
566 AGP_UNKNOWN,
567 AGP_1X,
568 AGP_2X,
569 AGP_4X,
570 AGP_8X
571};
572
573static enum pci_bus_speed agp_speed(int agp3, int agpstat)
574{
575 int index = 0;
576
577 if (agpstat & 4)
578 index = 3;
579 else if (agpstat & 2)
580 index = 2;
581 else if (agpstat & 1)
582 index = 1;
583 else
584 goto out;
585
586 if (agp3) {
587 index += 2;
588 if (index == 5)
589 index = 0;
590 }
591
592 out:
593 return agp_speeds[index];
594}
595
596
9be60ca0
MW
597static void pci_set_bus_speed(struct pci_bus *bus)
598{
599 struct pci_dev *bridge = bus->self;
600 int pos;
601
45b4cdd5
MW
602 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
603 if (!pos)
604 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
605 if (pos) {
606 u32 agpstat, agpcmd;
607
608 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
609 bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
610
611 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
612 bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
613 }
614
9be60ca0
MW
615 pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
616 if (pos) {
617 u16 status;
618 enum pci_bus_speed max;
9be60ca0 619
7793eeab
BH
620 pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS,
621 &status);
622
623 if (status & PCI_X_SSTATUS_533MHZ) {
9be60ca0 624 max = PCI_SPEED_133MHz_PCIX_533;
7793eeab 625 } else if (status & PCI_X_SSTATUS_266MHZ) {
9be60ca0 626 max = PCI_SPEED_133MHz_PCIX_266;
7793eeab
BH
627 } else if (status & PCI_X_SSTATUS_133MHZ) {
628 if ((status & PCI_X_SSTATUS_VERS) == PCI_X_SSTATUS_V2) {
9be60ca0
MW
629 max = PCI_SPEED_133MHz_PCIX_ECC;
630 } else {
631 max = PCI_SPEED_133MHz_PCIX;
632 }
633 } else {
634 max = PCI_SPEED_66MHz_PCIX;
635 }
636
637 bus->max_bus_speed = max;
7793eeab
BH
638 bus->cur_bus_speed = pcix_bus_speed[
639 (status & PCI_X_SSTATUS_FREQ) >> 6];
9be60ca0
MW
640
641 return;
642 }
643
fdfe1511 644 if (pci_is_pcie(bridge)) {
9be60ca0
MW
645 u32 linkcap;
646 u16 linksta;
647
59875ae4 648 pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap);
231afea1 649 bus->max_bus_speed = pcie_link_speed[linkcap & PCI_EXP_LNKCAP_SLS];
9be60ca0 650
59875ae4 651 pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta);
9be60ca0
MW
652 pcie_update_link_speed(bus, linksta);
653 }
654}
655
656
cbd4e055
AB
657static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
658 struct pci_dev *bridge, int busnr)
1da177e4
LT
659{
660 struct pci_bus *child;
661 int i;
4f535093 662 int ret;
1da177e4
LT
663
664 /*
665 * Allocate a new bus, and inherit stuff from the parent..
666 */
667 child = pci_alloc_bus();
668 if (!child)
669 return NULL;
670
1da177e4
LT
671 child->parent = parent;
672 child->ops = parent->ops;
0cbdcfcf 673 child->msi = parent->msi;
1da177e4 674 child->sysdata = parent->sysdata;
6e325a62 675 child->bus_flags = parent->bus_flags;
1da177e4 676
fd7d1ced 677 /* initialize some portions of the bus device, but don't register it
4f535093 678 * now as the parent is not properly set up yet.
fd7d1ced
GKH
679 */
680 child->dev.class = &pcibus_class;
1a927133 681 dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
1da177e4
LT
682
683 /*
684 * Set up the primary, secondary and subordinate
685 * bus numbers.
686 */
b918c62e
YL
687 child->number = child->busn_res.start = busnr;
688 child->primary = parent->busn_res.start;
689 child->busn_res.end = 0xff;
1da177e4 690
4f535093
YL
691 if (!bridge) {
692 child->dev.parent = parent->bridge;
693 goto add_dev;
694 }
3789fa8a
YZ
695
696 child->self = bridge;
697 child->bridge = get_device(&bridge->dev);
4f535093 698 child->dev.parent = child->bridge;
98d9f30c 699 pci_set_bus_of_node(child);
9be60ca0
MW
700 pci_set_bus_speed(child);
701
1da177e4 702 /* Set up default resource pointers and names.. */
fde09c6d 703 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
1da177e4
LT
704 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
705 child->resource[i]->name = child->name;
706 }
707 bridge->subordinate = child;
708
4f535093
YL
709add_dev:
710 ret = device_register(&child->dev);
711 WARN_ON(ret < 0);
712
10a95747
JL
713 pcibios_add_bus(child);
714
4f535093
YL
715 /* Create legacy_io and legacy_mem files for this bus */
716 pci_create_legacy_files(child);
717
1da177e4
LT
718 return child;
719}
720
451124a7 721struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
1da177e4
LT
722{
723 struct pci_bus *child;
724
725 child = pci_alloc_child_bus(parent, dev, busnr);
e4ea9bb7 726 if (child) {
d71374da 727 down_write(&pci_bus_sem);
1da177e4 728 list_add_tail(&child->node, &parent->children);
d71374da 729 up_write(&pci_bus_sem);
e4ea9bb7 730 }
1da177e4
LT
731 return child;
732}
733
96bde06a 734static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
26f674ae
GKH
735{
736 struct pci_bus *parent = child->parent;
12f44f46
IK
737
738 /* Attempts to fix that up are really dangerous unless
739 we're going to re-assign all bus numbers. */
740 if (!pcibios_assign_all_busses())
741 return;
742
b918c62e
YL
743 while (parent->parent && parent->busn_res.end < max) {
744 parent->busn_res.end = max;
26f674ae
GKH
745 pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
746 parent = parent->parent;
747 }
748}
749
1da177e4
LT
750/*
751 * If it's a bridge, configure it and scan the bus behind it.
752 * For CardBus bridges, we don't scan behind as the devices will
753 * be handled by the bridge driver itself.
754 *
755 * We need to process bridges in two passes -- first we scan those
756 * already configured by the BIOS and after we are done with all of
757 * them, we proceed to assigning numbers to the remaining buses in
758 * order to avoid overlaps between old and new bus numbers.
759 */
15856ad5 760int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
1da177e4
LT
761{
762 struct pci_bus *child;
763 int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
49887941 764 u32 buses, i, j = 0;
1da177e4 765 u16 bctl;
99ddd552 766 u8 primary, secondary, subordinate;
a1c19894 767 int broken = 0;
1da177e4
LT
768
769 pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
99ddd552
BH
770 primary = buses & 0xFF;
771 secondary = (buses >> 8) & 0xFF;
772 subordinate = (buses >> 16) & 0xFF;
1da177e4 773
99ddd552
BH
774 dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
775 secondary, subordinate, pass);
1da177e4 776
71f6bd4a
YL
777 if (!primary && (primary != bus->number) && secondary && subordinate) {
778 dev_warn(&dev->dev, "Primary bus is hard wired to 0\n");
779 primary = bus->number;
780 }
781
a1c19894
BH
782 /* Check if setup is sensible at all */
783 if (!pass &&
1965f66e
YL
784 (primary != bus->number || secondary <= bus->number ||
785 secondary > subordinate)) {
786 dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
787 secondary, subordinate);
a1c19894
BH
788 broken = 1;
789 }
790
1da177e4
LT
791 /* Disable MasterAbortMode during probing to avoid reporting
792 of bus errors (in some architectures) */
793 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
794 pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
795 bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
796
99ddd552
BH
797 if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
798 !is_cardbus && !broken) {
799 unsigned int cmax;
1da177e4
LT
800 /*
801 * Bus already configured by firmware, process it in the first
802 * pass and just note the configuration.
803 */
804 if (pass)
bbe8f9a3 805 goto out;
1da177e4
LT
806
807 /*
808 * If we already got to this bus through a different bridge,
74710ded
AC
809 * don't re-add it. This can happen with the i450NX chipset.
810 *
811 * However, we continue to descend down the hierarchy and
812 * scan remaining child buses.
1da177e4 813 */
99ddd552 814 child = pci_find_bus(pci_domain_nr(bus), secondary);
74710ded 815 if (!child) {
99ddd552 816 child = pci_add_new_bus(bus, dev, secondary);
74710ded
AC
817 if (!child)
818 goto out;
99ddd552 819 child->primary = primary;
bc76b731 820 pci_bus_insert_busn_res(child, secondary, subordinate);
74710ded 821 child->bridge_ctl = bctl;
1da177e4
LT
822 }
823
1da177e4
LT
824 cmax = pci_scan_child_bus(child);
825 if (cmax > max)
826 max = cmax;
b918c62e
YL
827 if (child->busn_res.end > max)
828 max = child->busn_res.end;
1da177e4
LT
829 } else {
830 /*
831 * We need to assign a number to this bus which we always
832 * do in the second pass.
833 */
12f44f46 834 if (!pass) {
a1c19894 835 if (pcibios_assign_all_busses() || broken)
12f44f46
IK
836 /* Temporarily disable forwarding of the
837 configuration cycles on all bridges in
838 this bus segment to avoid possible
839 conflicts in the second pass between two
840 bridges programmed with overlapping
841 bus ranges. */
842 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
843 buses & ~0xffffff);
bbe8f9a3 844 goto out;
12f44f46 845 }
1da177e4
LT
846
847 /* Clear errors */
848 pci_write_config_word(dev, PCI_STATUS, 0xffff);
849
cc57450f 850 /* Prevent assigning a bus number that already exists.
b1a98b69
TC
851 * This can happen when a bridge is hot-plugged, so in
852 * this case we only re-scan this bus. */
853 child = pci_find_bus(pci_domain_nr(bus), max+1);
854 if (!child) {
855 child = pci_add_new_bus(bus, dev, ++max);
856 if (!child)
857 goto out;
bc76b731 858 pci_bus_insert_busn_res(child, max, 0xff);
b1a98b69 859 }
1da177e4
LT
860 buses = (buses & 0xff000000)
861 | ((unsigned int)(child->primary) << 0)
b918c62e
YL
862 | ((unsigned int)(child->busn_res.start) << 8)
863 | ((unsigned int)(child->busn_res.end) << 16);
1da177e4
LT
864
865 /*
866 * yenta.c forces a secondary latency timer of 176.
867 * Copy that behaviour here.
868 */
869 if (is_cardbus) {
870 buses &= ~0xff000000;
871 buses |= CARDBUS_LATENCY_TIMER << 24;
872 }
7c867c88 873
1da177e4
LT
874 /*
875 * We need to blast all three values with a single write.
876 */
877 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
878
879 if (!is_cardbus) {
11949255 880 child->bridge_ctl = bctl;
26f674ae
GKH
881 /*
882 * Adjust subordinate busnr in parent buses.
883 * We do this before scanning for children because
884 * some devices may not be detected if the bios
885 * was lazy.
886 */
887 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
888 /* Now we can scan all subordinate buses... */
889 max = pci_scan_child_bus(child);
e3ac86d8
KA
890 /*
891 * now fix it up again since we have found
892 * the real value of max.
893 */
894 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
895 } else {
896 /*
897 * For CardBus bridges, we leave 4 bus numbers
898 * as cards with a PCI-to-PCI bridge can be
899 * inserted later.
900 */
49887941
DB
901 for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
902 struct pci_bus *parent = bus;
cc57450f
RS
903 if (pci_find_bus(pci_domain_nr(bus),
904 max+i+1))
905 break;
49887941
DB
906 while (parent->parent) {
907 if ((!pcibios_assign_all_busses()) &&
b918c62e
YL
908 (parent->busn_res.end > max) &&
909 (parent->busn_res.end <= max+i)) {
49887941
DB
910 j = 1;
911 }
912 parent = parent->parent;
913 }
914 if (j) {
915 /*
916 * Often, there are two cardbus bridges
917 * -- try to leave one valid bus number
918 * for each one.
919 */
920 i /= 2;
921 break;
922 }
923 }
cc57450f 924 max += i;
26f674ae 925 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
926 }
927 /*
928 * Set the subordinate bus number to its real value.
929 */
bc76b731 930 pci_bus_update_busn_res_end(child, max);
1da177e4
LT
931 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
932 }
933
cb3576fa
GH
934 sprintf(child->name,
935 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
936 pci_domain_nr(bus), child->number);
1da177e4 937
d55bef51 938 /* Has only triggered on CardBus, fixup is in yenta_socket */
49887941 939 while (bus->parent) {
b918c62e
YL
940 if ((child->busn_res.end > bus->busn_res.end) ||
941 (child->number > bus->busn_res.end) ||
49887941 942 (child->number < bus->number) ||
b918c62e
YL
943 (child->busn_res.end < bus->number)) {
944 dev_info(&child->dev, "%pR %s "
945 "hidden behind%s bridge %s %pR\n",
946 &child->busn_res,
947 (bus->number > child->busn_res.end &&
948 bus->busn_res.end < child->number) ?
a6f29a98
JP
949 "wholly" : "partially",
950 bus->self->transparent ? " transparent" : "",
865df576 951 dev_name(&bus->dev),
b918c62e 952 &bus->busn_res);
49887941
DB
953 }
954 bus = bus->parent;
955 }
956
bbe8f9a3
RB
957out:
958 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
959
1da177e4
LT
960 return max;
961}
962
963/*
964 * Read interrupt line and base address registers.
965 * The architecture-dependent code can tweak these, of course.
966 */
967static void pci_read_irq(struct pci_dev *dev)
968{
969 unsigned char irq;
970
971 pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
ffeff788 972 dev->pin = irq;
1da177e4
LT
973 if (irq)
974 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
975 dev->irq = irq;
976}
977
bb209c82 978void set_pcie_port_type(struct pci_dev *pdev)
480b93b7
YZ
979{
980 int pos;
981 u16 reg16;
982
983 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
984 if (!pos)
985 return;
0efea000 986 pdev->pcie_cap = pos;
480b93b7 987 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
786e2288 988 pdev->pcie_flags_reg = reg16;
b03e7495
JM
989 pci_read_config_word(pdev, pos + PCI_EXP_DEVCAP, &reg16);
990 pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
480b93b7
YZ
991}
992
bb209c82 993void set_pcie_hotplug_bridge(struct pci_dev *pdev)
28760489 994{
28760489
EB
995 u32 reg32;
996
59875ae4 997 pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32);
28760489
EB
998 if (reg32 & PCI_EXP_SLTCAP_HPC)
999 pdev->is_hotplug_bridge = 1;
1000}
1001
01abc2aa 1002#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
76e6a1d6 1003
1da177e4
LT
1004/**
1005 * pci_setup_device - fill in class and map information of a device
1006 * @dev: the device structure to fill
1007 *
1008 * Initialize the device structure with information about the device's
1009 * vendor,class,memory and IO-space addresses,IRQ lines etc.
1010 * Called at initialisation of the PCI subsystem and by CardBus services.
480b93b7
YZ
1011 * Returns 0 on success and negative if unknown type of device (not normal,
1012 * bridge or CardBus).
1da177e4 1013 */
480b93b7 1014int pci_setup_device(struct pci_dev *dev)
1da177e4
LT
1015{
1016 u32 class;
480b93b7
YZ
1017 u8 hdr_type;
1018 struct pci_slot *slot;
bc577d2b 1019 int pos = 0;
5bfa14ed
BH
1020 struct pci_bus_region region;
1021 struct resource *res;
480b93b7
YZ
1022
1023 if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
1024 return -EIO;
1025
1026 dev->sysdata = dev->bus->sysdata;
1027 dev->dev.parent = dev->bus->bridge;
1028 dev->dev.bus = &pci_bus_type;
1029 dev->hdr_type = hdr_type & 0x7f;
1030 dev->multifunction = !!(hdr_type & 0x80);
480b93b7
YZ
1031 dev->error_state = pci_channel_io_normal;
1032 set_pcie_port_type(dev);
1033
1034 list_for_each_entry(slot, &dev->bus->slots, list)
1035 if (PCI_SLOT(dev->devfn) == slot->number)
1036 dev->slot = slot;
1037
1038 /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
1039 set this higher, assuming the system even supports it. */
1040 dev->dma_mask = 0xffffffff;
1da177e4 1041
eebfcfb5
GKH
1042 dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
1043 dev->bus->number, PCI_SLOT(dev->devfn),
1044 PCI_FUNC(dev->devfn));
1da177e4
LT
1045
1046 pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
b8a3a521 1047 dev->revision = class & 0xff;
2dd8ba92 1048 dev->class = class >> 8; /* upper 3 bytes */
1da177e4 1049
2dd8ba92
YL
1050 dev_printk(KERN_DEBUG, &dev->dev, "[%04x:%04x] type %02x class %#08x\n",
1051 dev->vendor, dev->device, dev->hdr_type, dev->class);
1da177e4 1052
853346e4
YZ
1053 /* need to have dev->class ready */
1054 dev->cfg_size = pci_cfg_space_size(dev);
1055
1da177e4 1056 /* "Unknown power state" */
3fe9d19f 1057 dev->current_state = PCI_UNKNOWN;
1da177e4
LT
1058
1059 /* Early fixups, before probing the BARs */
1060 pci_fixup_device(pci_fixup_early, dev);
f79b1b14
YZ
1061 /* device class may be changed after fixup */
1062 class = dev->class >> 8;
1da177e4
LT
1063
1064 switch (dev->hdr_type) { /* header type */
1065 case PCI_HEADER_TYPE_NORMAL: /* standard header */
1066 if (class == PCI_CLASS_BRIDGE_PCI)
1067 goto bad;
1068 pci_read_irq(dev);
1069 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
1070 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1071 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
368c73d4
AC
1072
1073 /*
1074 * Do the ugly legacy mode stuff here rather than broken chip
1075 * quirk code. Legacy mode ATA controllers have fixed
1076 * addresses. These are not always echoed in BAR0-3, and
1077 * BAR0-3 in a few cases contain junk!
1078 */
1079 if (class == PCI_CLASS_STORAGE_IDE) {
1080 u8 progif;
1081 pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
1082 if ((progif & 1) == 0) {
5bfa14ed
BH
1083 region.start = 0x1F0;
1084 region.end = 0x1F7;
1085 res = &dev->resource[0];
1086 res->flags = LEGACY_IO_RESOURCE;
fb127cb9 1087 pcibios_bus_to_resource(dev, res, &region);
5bfa14ed
BH
1088 region.start = 0x3F6;
1089 region.end = 0x3F6;
1090 res = &dev->resource[1];
1091 res->flags = LEGACY_IO_RESOURCE;
fb127cb9 1092 pcibios_bus_to_resource(dev, res, &region);
368c73d4
AC
1093 }
1094 if ((progif & 4) == 0) {
5bfa14ed
BH
1095 region.start = 0x170;
1096 region.end = 0x177;
1097 res = &dev->resource[2];
1098 res->flags = LEGACY_IO_RESOURCE;
fb127cb9 1099 pcibios_bus_to_resource(dev, res, &region);
5bfa14ed
BH
1100 region.start = 0x376;
1101 region.end = 0x376;
1102 res = &dev->resource[3];
1103 res->flags = LEGACY_IO_RESOURCE;
fb127cb9 1104 pcibios_bus_to_resource(dev, res, &region);
368c73d4
AC
1105 }
1106 }
1da177e4
LT
1107 break;
1108
1109 case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
1110 if (class != PCI_CLASS_BRIDGE_PCI)
1111 goto bad;
1112 /* The PCI-to-PCI bridge spec requires that subtractive
1113 decoding (i.e. transparent) bridge must have programming
1114 interface code of 0x01. */
3efd273b 1115 pci_read_irq(dev);
1da177e4
LT
1116 dev->transparent = ((dev->class & 0xff) == 1);
1117 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
28760489 1118 set_pcie_hotplug_bridge(dev);
bc577d2b
GB
1119 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
1120 if (pos) {
1121 pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
1122 pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
1123 }
1da177e4
LT
1124 break;
1125
1126 case PCI_HEADER_TYPE_CARDBUS: /* CardBus bridge header */
1127 if (class != PCI_CLASS_BRIDGE_CARDBUS)
1128 goto bad;
1129 pci_read_irq(dev);
1130 pci_read_bases(dev, 1, 0);
1131 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1132 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
1133 break;
1134
1135 default: /* unknown header */
80ccba11
BH
1136 dev_err(&dev->dev, "unknown header type %02x, "
1137 "ignoring device\n", dev->hdr_type);
480b93b7 1138 return -EIO;
1da177e4
LT
1139
1140 bad:
2dd8ba92
YL
1141 dev_err(&dev->dev, "ignoring class %#08x (doesn't match header "
1142 "type %02x)\n", dev->class, dev->hdr_type);
1da177e4
LT
1143 dev->class = PCI_CLASS_NOT_DEFINED;
1144 }
1145
1146 /* We found a fine healthy device, go go go... */
1147 return 0;
1148}
1149
201de56e
ZY
1150static void pci_release_capabilities(struct pci_dev *dev)
1151{
1152 pci_vpd_release(dev);
d1b054da 1153 pci_iov_release(dev);
f796841e 1154 pci_free_cap_save_buffers(dev);
201de56e
ZY
1155}
1156
1da177e4
LT
1157/**
1158 * pci_release_dev - free a pci device structure when all users of it are finished.
1159 * @dev: device that's been disconnected
1160 *
1161 * Will be called only by the device core when all users of this pci device are
1162 * done.
1163 */
1164static void pci_release_dev(struct device *dev)
1165{
1166 struct pci_dev *pci_dev;
1167
1168 pci_dev = to_pci_dev(dev);
201de56e 1169 pci_release_capabilities(pci_dev);
98d9f30c 1170 pci_release_of_node(pci_dev);
6ae32c53 1171 pcibios_release_device(pci_dev);
8b1fce04 1172 pci_bus_put(pci_dev->bus);
1da177e4
LT
1173 kfree(pci_dev);
1174}
1175
1176/**
1177 * pci_cfg_space_size - get the configuration space size of the PCI device.
8f7020d3 1178 * @dev: PCI device
1da177e4
LT
1179 *
1180 * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1181 * have 4096 bytes. Even if the device is capable, that doesn't mean we can
1182 * access it. Maybe we don't have a way to generate extended config space
1183 * accesses, or the device is behind a reverse Express bridge. So we try
1184 * reading the dword at 0x100 which must either be 0 or a valid extended
1185 * capability header.
1186 */
70b9f7dc 1187int pci_cfg_space_size_ext(struct pci_dev *dev)
1da177e4 1188{
1da177e4 1189 u32 status;
557848c3 1190 int pos = PCI_CFG_SPACE_SIZE;
1da177e4 1191
557848c3 1192 if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
70b9f7dc
YL
1193 goto fail;
1194 if (status == 0xffffffff)
1195 goto fail;
1196
1197 return PCI_CFG_SPACE_EXP_SIZE;
1198
1199 fail:
1200 return PCI_CFG_SPACE_SIZE;
1201}
1202
1203int pci_cfg_space_size(struct pci_dev *dev)
1204{
1205 int pos;
1206 u32 status;
dfadd9ed
YL
1207 u16 class;
1208
1209 class = dev->class >> 8;
1210 if (class == PCI_CLASS_BRIDGE_HOST)
1211 return pci_cfg_space_size_ext(dev);
57741a77 1212
59875ae4 1213 if (!pci_is_pcie(dev)) {
1da177e4
LT
1214 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1215 if (!pos)
1216 goto fail;
1217
1218 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1219 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1220 goto fail;
1221 }
1222
70b9f7dc 1223 return pci_cfg_space_size_ext(dev);
1da177e4
LT
1224
1225 fail:
1226 return PCI_CFG_SPACE_SIZE;
1227}
1228
3c6e6ae7 1229struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
65891215
ME
1230{
1231 struct pci_dev *dev;
1232
1233 dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1234 if (!dev)
1235 return NULL;
1236
65891215 1237 INIT_LIST_HEAD(&dev->bus_list);
88e7b167 1238 dev->dev.type = &pci_dev_type;
3c6e6ae7 1239 dev->bus = pci_bus_get(bus);
65891215
ME
1240
1241 return dev;
1242}
3c6e6ae7
GZ
1243EXPORT_SYMBOL(pci_alloc_dev);
1244
1245struct pci_dev *alloc_pci_dev(void)
1246{
1247 return pci_alloc_dev(NULL);
1248}
65891215
ME
1249EXPORT_SYMBOL(alloc_pci_dev);
1250
efdc87da
YL
1251bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
1252 int crs_timeout)
1da177e4 1253{
1da177e4
LT
1254 int delay = 1;
1255
efdc87da
YL
1256 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1257 return false;
1da177e4
LT
1258
1259 /* some broken boards return 0 or ~0 if a slot is empty: */
efdc87da
YL
1260 if (*l == 0xffffffff || *l == 0x00000000 ||
1261 *l == 0x0000ffff || *l == 0xffff0000)
1262 return false;
1da177e4
LT
1263
1264 /* Configuration request Retry Status */
efdc87da
YL
1265 while (*l == 0xffff0001) {
1266 if (!crs_timeout)
1267 return false;
1268
1da177e4
LT
1269 msleep(delay);
1270 delay *= 2;
efdc87da
YL
1271 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
1272 return false;
1da177e4 1273 /* Card hasn't responded in 60 seconds? Must be stuck. */
efdc87da 1274 if (delay > crs_timeout) {
80ccba11 1275 printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
1da177e4
LT
1276 "responding\n", pci_domain_nr(bus),
1277 bus->number, PCI_SLOT(devfn),
1278 PCI_FUNC(devfn));
efdc87da 1279 return false;
1da177e4
LT
1280 }
1281 }
1282
efdc87da
YL
1283 return true;
1284}
1285EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
1286
1287/*
1288 * Read the config data for a PCI device, sanity-check it
1289 * and fill in the dev structure...
1290 */
1291static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1292{
1293 struct pci_dev *dev;
1294 u32 l;
1295
1296 if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000))
1297 return NULL;
1298
8b1fce04 1299 dev = pci_alloc_dev(bus);
1da177e4
LT
1300 if (!dev)
1301 return NULL;
1302
1da177e4 1303 dev->devfn = devfn;
1da177e4
LT
1304 dev->vendor = l & 0xffff;
1305 dev->device = (l >> 16) & 0xffff;
cef354db 1306
98d9f30c
BH
1307 pci_set_of_node(dev);
1308
480b93b7 1309 if (pci_setup_device(dev)) {
8b1fce04 1310 pci_bus_put(dev->bus);
1da177e4
LT
1311 kfree(dev);
1312 return NULL;
1313 }
1da177e4
LT
1314
1315 return dev;
1316}
1317
201de56e
ZY
1318static void pci_init_capabilities(struct pci_dev *dev)
1319{
1320 /* MSI/MSI-X list */
1321 pci_msi_init_pci_dev(dev);
1322
63f4898a
RW
1323 /* Buffers for saving PCIe and PCI-X capabilities */
1324 pci_allocate_cap_save_buffers(dev);
1325
201de56e
ZY
1326 /* Power Management */
1327 pci_pm_init(dev);
1328
1329 /* Vital Product Data */
1330 pci_vpd_pci22_init(dev);
58c3a727
YZ
1331
1332 /* Alternative Routing-ID Forwarding */
31ab2476 1333 pci_configure_ari(dev);
d1b054da
YZ
1334
1335 /* Single Root I/O Virtualization */
1336 pci_iov_init(dev);
ae21ee65
AK
1337
1338 /* Enable ACS P2P upstream forwarding */
5d990b62 1339 pci_enable_acs(dev);
201de56e
ZY
1340}
1341
96bde06a 1342void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1da177e4 1343{
4f535093
YL
1344 int ret;
1345
cdb9b9f7
PM
1346 device_initialize(&dev->dev);
1347 dev->dev.release = pci_release_dev;
1da177e4 1348
7629d19a 1349 set_dev_node(&dev->dev, pcibus_to_node(bus));
cdb9b9f7 1350 dev->dev.dma_mask = &dev->dma_mask;
4d57cdfa 1351 dev->dev.dma_parms = &dev->dma_parms;
cdb9b9f7 1352 dev->dev.coherent_dma_mask = 0xffffffffull;
1da177e4 1353
4d57cdfa 1354 pci_set_dma_max_seg_size(dev, 65536);
59fc67de 1355 pci_set_dma_seg_boundary(dev, 0xffffffff);
4d57cdfa 1356
1da177e4
LT
1357 /* Fix up broken headers */
1358 pci_fixup_device(pci_fixup_header, dev);
1359
2069ecfb
YL
1360 /* moved out from quirk header fixup code */
1361 pci_reassigndev_resource_alignment(dev);
1362
4b77b0a2
RW
1363 /* Clear the state_saved flag. */
1364 dev->state_saved = false;
1365
201de56e
ZY
1366 /* Initialize various capabilities */
1367 pci_init_capabilities(dev);
eb9d0fe4 1368
1da177e4
LT
1369 /*
1370 * Add the device to our list of discovered devices
1371 * and the bus list for fixup functions, etc.
1372 */
d71374da 1373 down_write(&pci_bus_sem);
1da177e4 1374 list_add_tail(&dev->bus_list, &bus->devices);
d71374da 1375 up_write(&pci_bus_sem);
4f535093 1376
4f535093
YL
1377 ret = pcibios_add_device(dev);
1378 WARN_ON(ret < 0);
1379
1380 /* Notifier could use PCI capabilities */
1381 dev->match_driver = false;
1382 ret = device_add(&dev->dev);
1383 WARN_ON(ret < 0);
1384
1385 pci_proc_attach_device(dev);
cdb9b9f7
PM
1386}
1387
451124a7 1388struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
cdb9b9f7
PM
1389{
1390 struct pci_dev *dev;
1391
90bdb311
TP
1392 dev = pci_get_slot(bus, devfn);
1393 if (dev) {
1394 pci_dev_put(dev);
1395 return dev;
1396 }
1397
cdb9b9f7
PM
1398 dev = pci_scan_device(bus, devfn);
1399 if (!dev)
1400 return NULL;
1401
1402 pci_device_add(dev, bus);
1da177e4
LT
1403
1404 return dev;
1405}
b73e9687 1406EXPORT_SYMBOL(pci_scan_single_device);
1da177e4 1407
b1bd58e4 1408static unsigned next_fn(struct pci_bus *bus, struct pci_dev *dev, unsigned fn)
f07852d6 1409{
b1bd58e4
YW
1410 int pos;
1411 u16 cap = 0;
1412 unsigned next_fn;
4fb88c1a 1413
b1bd58e4
YW
1414 if (pci_ari_enabled(bus)) {
1415 if (!dev)
1416 return 0;
1417 pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1418 if (!pos)
1419 return 0;
4fb88c1a 1420
b1bd58e4
YW
1421 pci_read_config_word(dev, pos + PCI_ARI_CAP, &cap);
1422 next_fn = PCI_ARI_CAP_NFN(cap);
1423 if (next_fn <= fn)
1424 return 0; /* protect against malformed list */
f07852d6 1425
b1bd58e4
YW
1426 return next_fn;
1427 }
1428
1429 /* dev may be NULL for non-contiguous multifunction devices */
1430 if (!dev || dev->multifunction)
1431 return (fn + 1) % 8;
f07852d6 1432
f07852d6
MW
1433 return 0;
1434}
1435
1436static int only_one_child(struct pci_bus *bus)
1437{
1438 struct pci_dev *parent = bus->self;
284f5f9d 1439
f07852d6
MW
1440 if (!parent || !pci_is_pcie(parent))
1441 return 0;
62f87c0e 1442 if (pci_pcie_type(parent) == PCI_EXP_TYPE_ROOT_PORT)
284f5f9d 1443 return 1;
62f87c0e 1444 if (pci_pcie_type(parent) == PCI_EXP_TYPE_DOWNSTREAM &&
284f5f9d 1445 !pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS))
f07852d6
MW
1446 return 1;
1447 return 0;
1448}
1449
1da177e4
LT
1450/**
1451 * pci_scan_slot - scan a PCI slot on a bus for devices.
1452 * @bus: PCI bus to scan
1453 * @devfn: slot number to scan (must have zero function.)
1454 *
1455 * Scan a PCI slot on the specified PCI bus for devices, adding
1456 * discovered devices to the @bus->devices list. New devices
8a1bc901 1457 * will not have is_added set.
1b69dfc6
TP
1458 *
1459 * Returns the number of new devices found.
1da177e4 1460 */
96bde06a 1461int pci_scan_slot(struct pci_bus *bus, int devfn)
1da177e4 1462{
f07852d6 1463 unsigned fn, nr = 0;
1b69dfc6 1464 struct pci_dev *dev;
f07852d6
MW
1465
1466 if (only_one_child(bus) && (devfn > 0))
1467 return 0; /* Already scanned the entire slot */
1da177e4 1468
1b69dfc6 1469 dev = pci_scan_single_device(bus, devfn);
4fb88c1a
MW
1470 if (!dev)
1471 return 0;
1472 if (!dev->is_added)
1b69dfc6
TP
1473 nr++;
1474
b1bd58e4 1475 for (fn = next_fn(bus, dev, 0); fn > 0; fn = next_fn(bus, dev, fn)) {
f07852d6
MW
1476 dev = pci_scan_single_device(bus, devfn + fn);
1477 if (dev) {
1478 if (!dev->is_added)
1479 nr++;
1480 dev->multifunction = 1;
1da177e4
LT
1481 }
1482 }
7d715a6c 1483
149e1637
SL
1484 /* only one slot has pcie device */
1485 if (bus->self && nr)
7d715a6c
SL
1486 pcie_aspm_init_link_state(bus->self);
1487
1da177e4
LT
1488 return nr;
1489}
1490
b03e7495
JM
1491static int pcie_find_smpss(struct pci_dev *dev, void *data)
1492{
1493 u8 *smpss = data;
1494
1495 if (!pci_is_pcie(dev))
1496 return 0;
1497
d4aa68f6
YW
1498 /*
1499 * We don't have a way to change MPS settings on devices that have
1500 * drivers attached. A hot-added device might support only the minimum
1501 * MPS setting (MPS=128). Therefore, if the fabric contains a bridge
1502 * where devices may be hot-added, we limit the fabric MPS to 128 so
1503 * hot-added devices will work correctly.
1504 *
1505 * However, if we hot-add a device to a slot directly below a Root
1506 * Port, it's impossible for there to be other existing devices below
1507 * the port. We don't limit the MPS in this case because we can
1508 * reconfigure MPS on both the Root Port and the hot-added device,
1509 * and there are no other devices involved.
1510 *
1511 * Note that this PCIE_BUS_SAFE path assumes no peer-to-peer DMA.
b03e7495 1512 */
d4aa68f6
YW
1513 if (dev->is_hotplug_bridge &&
1514 pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT)
b03e7495
JM
1515 *smpss = 0;
1516
1517 if (*smpss > dev->pcie_mpss)
1518 *smpss = dev->pcie_mpss;
1519
1520 return 0;
1521}
1522
1523static void pcie_write_mps(struct pci_dev *dev, int mps)
1524{
62f392ea 1525 int rc;
b03e7495
JM
1526
1527 if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
62f392ea 1528 mps = 128 << dev->pcie_mpss;
b03e7495 1529
62f87c0e
YW
1530 if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT &&
1531 dev->bus->self)
62f392ea 1532 /* For "Performance", the assumption is made that
b03e7495
JM
1533 * downstream communication will never be larger than
1534 * the MRRS. So, the MPS only needs to be configured
1535 * for the upstream communication. This being the case,
1536 * walk from the top down and set the MPS of the child
1537 * to that of the parent bus.
62f392ea
JM
1538 *
1539 * Configure the device MPS with the smaller of the
1540 * device MPSS or the bridge MPS (which is assumed to be
1541 * properly configured at this point to the largest
1542 * allowable MPS based on its parent bus).
b03e7495 1543 */
62f392ea 1544 mps = min(mps, pcie_get_mps(dev->bus->self));
b03e7495
JM
1545 }
1546
1547 rc = pcie_set_mps(dev, mps);
1548 if (rc)
1549 dev_err(&dev->dev, "Failed attempting to set the MPS\n");
1550}
1551
62f392ea 1552static void pcie_write_mrrs(struct pci_dev *dev)
b03e7495 1553{
62f392ea 1554 int rc, mrrs;
b03e7495 1555
ed2888e9
JM
1556 /* In the "safe" case, do not configure the MRRS. There appear to be
1557 * issues with setting MRRS to 0 on a number of devices.
1558 */
ed2888e9
JM
1559 if (pcie_bus_config != PCIE_BUS_PERFORMANCE)
1560 return;
1561
ed2888e9
JM
1562 /* For Max performance, the MRRS must be set to the largest supported
1563 * value. However, it cannot be configured larger than the MPS the
62f392ea
JM
1564 * device or the bus can support. This should already be properly
1565 * configured by a prior call to pcie_write_mps.
ed2888e9 1566 */
62f392ea 1567 mrrs = pcie_get_mps(dev);
b03e7495
JM
1568
1569 /* MRRS is a R/W register. Invalid values can be written, but a
ed2888e9 1570 * subsequent read will verify if the value is acceptable or not.
b03e7495
JM
1571 * If the MRRS value provided is not acceptable (e.g., too large),
1572 * shrink the value until it is acceptable to the HW.
1573 */
1574 while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
1575 rc = pcie_set_readrq(dev, mrrs);
62f392ea
JM
1576 if (!rc)
1577 break;
b03e7495 1578
62f392ea 1579 dev_warn(&dev->dev, "Failed attempting to set the MRRS\n");
b03e7495
JM
1580 mrrs /= 2;
1581 }
62f392ea
JM
1582
1583 if (mrrs < 128)
1584 dev_err(&dev->dev, "MRRS was unable to be configured with a "
1585 "safe value. If problems are experienced, try running "
1586 "with pci=pcie_bus_safe.\n");
b03e7495
JM
1587}
1588
5895af79
YW
1589static void pcie_bus_detect_mps(struct pci_dev *dev)
1590{
1591 struct pci_dev *bridge = dev->bus->self;
1592 int mps, p_mps;
1593
1594 if (!bridge)
1595 return;
1596
1597 mps = pcie_get_mps(dev);
1598 p_mps = pcie_get_mps(bridge);
1599
1600 if (mps != p_mps)
1601 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",
1602 mps, pci_name(bridge), p_mps);
1603}
1604
b03e7495
JM
1605static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
1606{
a513a99a 1607 int mps, orig_mps;
b03e7495
JM
1608
1609 if (!pci_is_pcie(dev))
1610 return 0;
1611
5895af79
YW
1612 if (pcie_bus_config == PCIE_BUS_TUNE_OFF) {
1613 pcie_bus_detect_mps(dev);
1614 return 0;
1615 }
1616
a513a99a
JM
1617 mps = 128 << *(u8 *)data;
1618 orig_mps = pcie_get_mps(dev);
b03e7495
JM
1619
1620 pcie_write_mps(dev, mps);
62f392ea 1621 pcie_write_mrrs(dev);
b03e7495 1622
2c25e34c 1623 dev_info(&dev->dev, "Max Payload Size set to %4d/%4d (was %4d), "
a513a99a
JM
1624 "Max Read Rq %4d\n", pcie_get_mps(dev), 128 << dev->pcie_mpss,
1625 orig_mps, pcie_get_readrq(dev));
b03e7495
JM
1626
1627 return 0;
1628}
1629
a513a99a 1630/* pcie_bus_configure_settings requires that pci_walk_bus work in a top-down,
b03e7495
JM
1631 * parents then children fashion. If this changes, then this code will not
1632 * work as designed.
1633 */
a58674ff 1634void pcie_bus_configure_settings(struct pci_bus *bus)
b03e7495 1635{
5f39e670 1636 u8 smpss;
b03e7495 1637
a58674ff 1638 if (!bus->self)
b03e7495
JM
1639 return;
1640
b03e7495 1641 if (!pci_is_pcie(bus->self))
5f39e670
JM
1642 return;
1643
1644 /* FIXME - Peer to peer DMA is possible, though the endpoint would need
3315472c 1645 * to be aware of the MPS of the destination. To work around this,
5f39e670
JM
1646 * simply force the MPS of the entire system to the smallest possible.
1647 */
1648 if (pcie_bus_config == PCIE_BUS_PEER2PEER)
1649 smpss = 0;
1650
b03e7495 1651 if (pcie_bus_config == PCIE_BUS_SAFE) {
a58674ff 1652 smpss = bus->self->pcie_mpss;
5f39e670 1653
b03e7495
JM
1654 pcie_find_smpss(bus->self, &smpss);
1655 pci_walk_bus(bus, pcie_find_smpss, &smpss);
1656 }
1657
1658 pcie_bus_configure_set(bus->self, &smpss);
1659 pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
1660}
debc3b77 1661EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
b03e7495 1662
15856ad5 1663unsigned int pci_scan_child_bus(struct pci_bus *bus)
1da177e4 1664{
b918c62e 1665 unsigned int devfn, pass, max = bus->busn_res.start;
1da177e4
LT
1666 struct pci_dev *dev;
1667
0207c356 1668 dev_dbg(&bus->dev, "scanning bus\n");
1da177e4
LT
1669
1670 /* Go find them, Rover! */
1671 for (devfn = 0; devfn < 0x100; devfn += 8)
1672 pci_scan_slot(bus, devfn);
1673
a28724b0
YZ
1674 /* Reserve buses for SR-IOV capability. */
1675 max += pci_iov_bus_range(bus);
1676
1da177e4
LT
1677 /*
1678 * After performing arch-dependent fixup of the bus, look behind
1679 * all PCI-to-PCI bridges on this bus.
1680 */
74710ded 1681 if (!bus->is_added) {
0207c356 1682 dev_dbg(&bus->dev, "fixups for bus\n");
74710ded 1683 pcibios_fixup_bus(bus);
981cf9ea 1684 bus->is_added = 1;
74710ded
AC
1685 }
1686
1da177e4
LT
1687 for (pass=0; pass < 2; pass++)
1688 list_for_each_entry(dev, &bus->devices, bus_list) {
1689 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1690 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1691 max = pci_scan_bridge(bus, dev, max, pass);
1692 }
1693
1694 /*
1695 * We've scanned the bus and so we know all about what's on
1696 * the other side of any bridges that may be on this bus plus
1697 * any devices.
1698 *
1699 * Return how far we've got finding sub-buses.
1700 */
0207c356 1701 dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1da177e4
LT
1702 return max;
1703}
1704
6c0cc950
RW
1705/**
1706 * pcibios_root_bridge_prepare - Platform-specific host bridge setup.
1707 * @bridge: Host bridge to set up.
1708 *
1709 * Default empty implementation. Replace with an architecture-specific setup
1710 * routine, if necessary.
1711 */
1712int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
1713{
1714 return 0;
1715}
1716
10a95747
JL
1717void __weak pcibios_add_bus(struct pci_bus *bus)
1718{
1719}
1720
1721void __weak pcibios_remove_bus(struct pci_bus *bus)
1722{
1723}
1724
166c6370
BH
1725struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
1726 struct pci_ops *ops, void *sysdata, struct list_head *resources)
1da177e4 1727{
0efd5aab 1728 int error;
5a21d70d 1729 struct pci_host_bridge *bridge;
0207c356 1730 struct pci_bus *b, *b2;
0efd5aab 1731 struct pci_host_bridge_window *window, *n;
a9d9f527 1732 struct resource *res;
0efd5aab
BH
1733 resource_size_t offset;
1734 char bus_addr[64];
1735 char *fmt;
1da177e4
LT
1736
1737 b = pci_alloc_bus();
1738 if (!b)
7b543663 1739 return NULL;
1da177e4
LT
1740
1741 b->sysdata = sysdata;
1742 b->ops = ops;
4f535093 1743 b->number = b->busn_res.start = bus;
0207c356
BH
1744 b2 = pci_find_bus(pci_domain_nr(b), bus);
1745 if (b2) {
1da177e4 1746 /* If we already got to this bus through a different bridge, ignore it */
0207c356 1747 dev_dbg(&b2->dev, "bus already known\n");
1da177e4
LT
1748 goto err_out;
1749 }
d71374da 1750
7b543663
YL
1751 bridge = pci_alloc_host_bridge(b);
1752 if (!bridge)
1753 goto err_out;
1754
1755 bridge->dev.parent = parent;
70efde2a 1756 bridge->dev.release = pci_release_host_bridge_dev;
7b543663 1757 dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus);
6c0cc950 1758 error = pcibios_root_bridge_prepare(bridge);
343df771
JL
1759 if (error) {
1760 kfree(bridge);
1761 goto err_out;
1762 }
6c0cc950 1763
7b543663 1764 error = device_register(&bridge->dev);
343df771
JL
1765 if (error) {
1766 put_device(&bridge->dev);
1767 goto err_out;
1768 }
7b543663 1769 b->bridge = get_device(&bridge->dev);
a1e4d72c 1770 device_enable_async_suspend(b->bridge);
98d9f30c 1771 pci_set_bus_of_node(b);
1da177e4 1772
0d358f22
YL
1773 if (!parent)
1774 set_dev_node(b->bridge, pcibus_to_node(b));
1775
fd7d1ced
GKH
1776 b->dev.class = &pcibus_class;
1777 b->dev.parent = b->bridge;
1a927133 1778 dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
fd7d1ced 1779 error = device_register(&b->dev);
1da177e4
LT
1780 if (error)
1781 goto class_dev_reg_err;
1da177e4 1782
10a95747
JL
1783 pcibios_add_bus(b);
1784
1da177e4
LT
1785 /* Create legacy_io and legacy_mem files for this bus */
1786 pci_create_legacy_files(b);
1787
a9d9f527
BH
1788 if (parent)
1789 dev_info(parent, "PCI host bridge to bus %s\n", dev_name(&b->dev));
1790 else
1791 printk(KERN_INFO "PCI host bridge to bus %s\n", dev_name(&b->dev));
1792
0efd5aab
BH
1793 /* Add initial resources to the bus */
1794 list_for_each_entry_safe(window, n, resources, list) {
1795 list_move_tail(&window->list, &bridge->windows);
1796 res = window->res;
1797 offset = window->offset;
f848ffb1
YL
1798 if (res->flags & IORESOURCE_BUS)
1799 pci_bus_insert_busn_res(b, bus, res->end);
1800 else
1801 pci_bus_add_resource(b, res, 0);
0efd5aab
BH
1802 if (offset) {
1803 if (resource_type(res) == IORESOURCE_IO)
1804 fmt = " (bus address [%#06llx-%#06llx])";
1805 else
1806 fmt = " (bus address [%#010llx-%#010llx])";
1807 snprintf(bus_addr, sizeof(bus_addr), fmt,
1808 (unsigned long long) (res->start - offset),
1809 (unsigned long long) (res->end - offset));
1810 } else
1811 bus_addr[0] = '\0';
1812 dev_info(&b->dev, "root bus resource %pR%s\n", res, bus_addr);
a9d9f527
BH
1813 }
1814
a5390aa6
BH
1815 down_write(&pci_bus_sem);
1816 list_add_tail(&b->node, &pci_root_buses);
1817 up_write(&pci_bus_sem);
1818
1da177e4
LT
1819 return b;
1820
1da177e4 1821class_dev_reg_err:
7b543663
YL
1822 put_device(&bridge->dev);
1823 device_unregister(&bridge->dev);
1da177e4 1824err_out:
1da177e4
LT
1825 kfree(b);
1826 return NULL;
1827}
cdb9b9f7 1828
98a35831
YL
1829int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
1830{
1831 struct resource *res = &b->busn_res;
1832 struct resource *parent_res, *conflict;
1833
1834 res->start = bus;
1835 res->end = bus_max;
1836 res->flags = IORESOURCE_BUS;
1837
1838 if (!pci_is_root_bus(b))
1839 parent_res = &b->parent->busn_res;
1840 else {
1841 parent_res = get_pci_domain_busn_res(pci_domain_nr(b));
1842 res->flags |= IORESOURCE_PCI_FIXED;
1843 }
1844
1845 conflict = insert_resource_conflict(parent_res, res);
1846
1847 if (conflict)
1848 dev_printk(KERN_DEBUG, &b->dev,
1849 "busn_res: can not insert %pR under %s%pR (conflicts with %s %pR)\n",
1850 res, pci_is_root_bus(b) ? "domain " : "",
1851 parent_res, conflict->name, conflict);
98a35831
YL
1852
1853 return conflict == NULL;
1854}
1855
1856int pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
1857{
1858 struct resource *res = &b->busn_res;
1859 struct resource old_res = *res;
1860 resource_size_t size;
1861 int ret;
1862
1863 if (res->start > bus_max)
1864 return -EINVAL;
1865
1866 size = bus_max - res->start + 1;
1867 ret = adjust_resource(res, res->start, size);
1868 dev_printk(KERN_DEBUG, &b->dev,
1869 "busn_res: %pR end %s updated to %02x\n",
1870 &old_res, ret ? "can not be" : "is", bus_max);
1871
1872 if (!ret && !res->parent)
1873 pci_bus_insert_busn_res(b, res->start, res->end);
1874
1875 return ret;
1876}
1877
1878void pci_bus_release_busn_res(struct pci_bus *b)
1879{
1880 struct resource *res = &b->busn_res;
1881 int ret;
1882
1883 if (!res->flags || !res->parent)
1884 return;
1885
1886 ret = release_resource(res);
1887 dev_printk(KERN_DEBUG, &b->dev,
1888 "busn_res: %pR %s released\n",
1889 res, ret ? "can not be" : "is");
1890}
1891
15856ad5 1892struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
a2ebb827
BH
1893 struct pci_ops *ops, void *sysdata, struct list_head *resources)
1894{
4d99f524
YL
1895 struct pci_host_bridge_window *window;
1896 bool found = false;
a2ebb827 1897 struct pci_bus *b;
4d99f524
YL
1898 int max;
1899
1900 list_for_each_entry(window, resources, list)
1901 if (window->res->flags & IORESOURCE_BUS) {
1902 found = true;
1903 break;
1904 }
a2ebb827
BH
1905
1906 b = pci_create_root_bus(parent, bus, ops, sysdata, resources);
1907 if (!b)
1908 return NULL;
1909
4d99f524
YL
1910 if (!found) {
1911 dev_info(&b->dev,
1912 "No busn resource found for root bus, will use [bus %02x-ff]\n",
1913 bus);
1914 pci_bus_insert_busn_res(b, bus, 255);
1915 }
1916
1917 max = pci_scan_child_bus(b);
1918
1919 if (!found)
1920 pci_bus_update_busn_res_end(b, max);
1921
a2ebb827
BH
1922 pci_bus_add_devices(b);
1923 return b;
1924}
1925EXPORT_SYMBOL(pci_scan_root_bus);
1926
7e00fe2e 1927/* Deprecated; use pci_scan_root_bus() instead */
15856ad5 1928struct pci_bus *pci_scan_bus_parented(struct device *parent,
cdb9b9f7
PM
1929 int bus, struct pci_ops *ops, void *sysdata)
1930{
1e39ae9f 1931 LIST_HEAD(resources);
cdb9b9f7
PM
1932 struct pci_bus *b;
1933
1e39ae9f
BH
1934 pci_add_resource(&resources, &ioport_resource);
1935 pci_add_resource(&resources, &iomem_resource);
857c3b66 1936 pci_add_resource(&resources, &busn_resource);
1e39ae9f 1937 b = pci_create_root_bus(parent, bus, ops, sysdata, &resources);
cdb9b9f7 1938 if (b)
857c3b66 1939 pci_scan_child_bus(b);
1e39ae9f
BH
1940 else
1941 pci_free_resource_list(&resources);
cdb9b9f7
PM
1942 return b;
1943}
1da177e4
LT
1944EXPORT_SYMBOL(pci_scan_bus_parented);
1945
15856ad5 1946struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops,
de4b2f76
BH
1947 void *sysdata)
1948{
1949 LIST_HEAD(resources);
1950 struct pci_bus *b;
1951
1952 pci_add_resource(&resources, &ioport_resource);
1953 pci_add_resource(&resources, &iomem_resource);
857c3b66 1954 pci_add_resource(&resources, &busn_resource);
de4b2f76
BH
1955 b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
1956 if (b) {
857c3b66 1957 pci_scan_child_bus(b);
de4b2f76
BH
1958 pci_bus_add_devices(b);
1959 } else {
1960 pci_free_resource_list(&resources);
1961 }
1962 return b;
1963}
1964EXPORT_SYMBOL(pci_scan_bus);
1965
2f320521
YL
1966/**
1967 * pci_rescan_bus_bridge_resize - scan a PCI bus for devices.
1968 * @bridge: PCI bridge for the bus to scan
1969 *
1970 * Scan a PCI bus and child buses for new devices, add them,
1971 * and enable them, resizing bridge mmio/io resource if necessary
1972 * and possible. The caller must ensure the child devices are already
1973 * removed for resizing to occur.
1974 *
1975 * Returns the max number of subordinate bus discovered.
1976 */
1977unsigned int __ref pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
1978{
1979 unsigned int max;
1980 struct pci_bus *bus = bridge->subordinate;
1981
1982 max = pci_scan_child_bus(bus);
1983
1984 pci_assign_unassigned_bridge_resources(bridge);
1985
1986 pci_bus_add_devices(bus);
1987
1988 return max;
1989}
1990
a5213a31
YL
1991/**
1992 * pci_rescan_bus - scan a PCI bus for devices.
1993 * @bus: PCI bus to scan
1994 *
1995 * Scan a PCI bus and child buses for new devices, adds them,
1996 * and enables them.
1997 *
1998 * Returns the max number of subordinate bus discovered.
1999 */
2000unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
2001{
2002 unsigned int max;
2003
2004 max = pci_scan_child_bus(bus);
2005 pci_assign_unassigned_bus_resources(bus);
2006 pci_bus_add_devices(bus);
2007
2008 return max;
2009}
2010EXPORT_SYMBOL_GPL(pci_rescan_bus);
2011
1da177e4 2012EXPORT_SYMBOL(pci_add_new_bus);
1da177e4
LT
2013EXPORT_SYMBOL(pci_scan_slot);
2014EXPORT_SYMBOL(pci_scan_bridge);
1da177e4 2015EXPORT_SYMBOL_GPL(pci_scan_child_bus);
6b4b78fe 2016
99178b03 2017static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
6b4b78fe 2018{
99178b03
GKH
2019 const struct pci_dev *a = to_pci_dev(d_a);
2020 const struct pci_dev *b = to_pci_dev(d_b);
2021
6b4b78fe
MD
2022 if (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
2023 else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return 1;
2024
2025 if (a->bus->number < b->bus->number) return -1;
2026 else if (a->bus->number > b->bus->number) return 1;
2027
2028 if (a->devfn < b->devfn) return -1;
2029 else if (a->devfn > b->devfn) return 1;
2030
2031 return 0;
2032}
2033
5ff580c1 2034void __init pci_sort_breadthfirst(void)
6b4b78fe 2035{
99178b03 2036 bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
6b4b78fe 2037}
This page took 0.833145 seconds and 5 git commands to generate.