xref: /linux/drivers/pci/probe.c (revision 12871a0bd67dd4db4418e1daafcd46e9d329ef10)
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>
12 #include <linux/pci-aspm.h>
13 #include "pci.h"
14 
15 #define CARDBUS_LATENCY_TIMER	176	/* secondary latency timer */
16 #define CARDBUS_RESERVE_BUSNR	3
17 
18 /* Ugh.  Need to stop exporting this to modules. */
19 LIST_HEAD(pci_root_buses);
20 EXPORT_SYMBOL(pci_root_buses);
21 
22 
23 static int find_anything(struct device *dev, void *data)
24 {
25 	return 1;
26 }
27 
28 /*
29  * Some device drivers need know if pci is initiated.
30  * Basically, we think pci is not initiated when there
31  * is no device to be found on the pci_bus_type.
32  */
33 int no_pci_devices(void)
34 {
35 	struct device *dev;
36 	int no_devices;
37 
38 	dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
39 	no_devices = (dev == NULL);
40 	put_device(dev);
41 	return no_devices;
42 }
43 EXPORT_SYMBOL(no_pci_devices);
44 
45 /*
46  * PCI Bus Class
47  */
48 static void release_pcibus_dev(struct device *dev)
49 {
50 	struct pci_bus *pci_bus = to_pci_bus(dev);
51 
52 	if (pci_bus->bridge)
53 		put_device(pci_bus->bridge);
54 	pci_bus_remove_resources(pci_bus);
55 	kfree(pci_bus);
56 }
57 
58 static struct class pcibus_class = {
59 	.name		= "pci_bus",
60 	.dev_release	= &release_pcibus_dev,
61 	.dev_attrs	= pcibus_dev_attrs,
62 };
63 
64 static int __init pcibus_class_init(void)
65 {
66 	return class_register(&pcibus_class);
67 }
68 postcore_initcall(pcibus_class_init);
69 
70 /*
71  * Translate the low bits of the PCI base
72  * to the resource type
73  */
74 static inline unsigned int pci_calc_resource_flags(unsigned int flags)
75 {
76 	if (flags & PCI_BASE_ADDRESS_SPACE_IO)
77 		return IORESOURCE_IO;
78 
79 	if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
80 		return IORESOURCE_MEM | IORESOURCE_PREFETCH;
81 
82 	return IORESOURCE_MEM;
83 }
84 
85 static u64 pci_size(u64 base, u64 maxbase, u64 mask)
86 {
87 	u64 size = mask & maxbase;	/* Find the significant bits */
88 	if (!size)
89 		return 0;
90 
91 	/* Get the lowest of them to find the decode size, and
92 	   from that the extent.  */
93 	size = (size & ~(size-1)) - 1;
94 
95 	/* base == maxbase can be valid only if the BAR has
96 	   already been programmed with all 1s.  */
97 	if (base == maxbase && ((base | size) & mask) != mask)
98 		return 0;
99 
100 	return size;
101 }
102 
103 static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
104 {
105 	if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
106 		res->flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
107 		return pci_bar_io;
108 	}
109 
110 	res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
111 
112 	if (res->flags & PCI_BASE_ADDRESS_MEM_TYPE_64)
113 		return pci_bar_mem64;
114 	return pci_bar_mem32;
115 }
116 
117 /**
118  * pci_read_base - read a PCI BAR
119  * @dev: the PCI device
120  * @type: type of the BAR
121  * @res: resource buffer to be filled in
122  * @pos: BAR position in the config space
123  *
124  * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
125  */
126 int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
127 			struct resource *res, unsigned int pos)
128 {
129 	u32 l, sz, mask;
130 	u16 orig_cmd;
131 
132 	mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
133 
134 	if (!dev->mmio_always_on) {
135 		pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
136 		pci_write_config_word(dev, PCI_COMMAND,
137 			orig_cmd & ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO));
138 	}
139 
140 	res->name = pci_name(dev);
141 
142 	pci_read_config_dword(dev, pos, &l);
143 	pci_write_config_dword(dev, pos, l | mask);
144 	pci_read_config_dword(dev, pos, &sz);
145 	pci_write_config_dword(dev, pos, l);
146 
147 	if (!dev->mmio_always_on)
148 		pci_write_config_word(dev, PCI_COMMAND, orig_cmd);
149 
150 	/*
151 	 * All bits set in sz means the device isn't working properly.
152 	 * If the BAR isn't implemented, all bits must be 0.  If it's a
153 	 * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
154 	 * 1 must be clear.
155 	 */
156 	if (!sz || sz == 0xffffffff)
157 		goto fail;
158 
159 	/*
160 	 * I don't know how l can have all bits set.  Copied from old code.
161 	 * Maybe it fixes a bug on some ancient platform.
162 	 */
163 	if (l == 0xffffffff)
164 		l = 0;
165 
166 	if (type == pci_bar_unknown) {
167 		type = decode_bar(res, l);
168 		res->flags |= pci_calc_resource_flags(l) | IORESOURCE_SIZEALIGN;
169 		if (type == pci_bar_io) {
170 			l &= PCI_BASE_ADDRESS_IO_MASK;
171 			mask = PCI_BASE_ADDRESS_IO_MASK & IO_SPACE_LIMIT;
172 		} else {
173 			l &= PCI_BASE_ADDRESS_MEM_MASK;
174 			mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
175 		}
176 	} else {
177 		res->flags |= (l & IORESOURCE_ROM_ENABLE);
178 		l &= PCI_ROM_ADDRESS_MASK;
179 		mask = (u32)PCI_ROM_ADDRESS_MASK;
180 	}
181 
182 	if (type == pci_bar_mem64) {
183 		u64 l64 = l;
184 		u64 sz64 = sz;
185 		u64 mask64 = mask | (u64)~0 << 32;
186 
187 		pci_read_config_dword(dev, pos + 4, &l);
188 		pci_write_config_dword(dev, pos + 4, ~0);
189 		pci_read_config_dword(dev, pos + 4, &sz);
190 		pci_write_config_dword(dev, pos + 4, l);
191 
192 		l64 |= ((u64)l << 32);
193 		sz64 |= ((u64)sz << 32);
194 
195 		sz64 = pci_size(l64, sz64, mask64);
196 
197 		if (!sz64)
198 			goto fail;
199 
200 		if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
201 			dev_err(&dev->dev, "reg %x: can't handle 64-bit BAR\n",
202 				pos);
203 			goto fail;
204 		}
205 
206 		res->flags |= IORESOURCE_MEM_64;
207 		if ((sizeof(resource_size_t) < 8) && l) {
208 			/* Address above 32-bit boundary; disable the BAR */
209 			pci_write_config_dword(dev, pos, 0);
210 			pci_write_config_dword(dev, pos + 4, 0);
211 			res->start = 0;
212 			res->end = sz64;
213 		} else {
214 			res->start = l64;
215 			res->end = l64 + sz64;
216 			dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n",
217 				   pos, res);
218 		}
219 	} else {
220 		sz = pci_size(l, sz, mask);
221 
222 		if (!sz)
223 			goto fail;
224 
225 		res->start = l;
226 		res->end = l + sz;
227 
228 		dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n", pos, res);
229 	}
230 
231  out:
232 	return (type == pci_bar_mem64) ? 1 : 0;
233  fail:
234 	res->flags = 0;
235 	goto out;
236 }
237 
238 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
239 {
240 	unsigned int pos, reg;
241 
242 	for (pos = 0; pos < howmany; pos++) {
243 		struct resource *res = &dev->resource[pos];
244 		reg = PCI_BASE_ADDRESS_0 + (pos << 2);
245 		pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
246 	}
247 
248 	if (rom) {
249 		struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
250 		dev->rom_base_reg = rom;
251 		res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
252 				IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
253 				IORESOURCE_SIZEALIGN;
254 		__pci_read_base(dev, pci_bar_mem32, res, rom);
255 	}
256 }
257 
258 static void __devinit pci_read_bridge_io(struct pci_bus *child)
259 {
260 	struct pci_dev *dev = child->self;
261 	u8 io_base_lo, io_limit_lo;
262 	unsigned long base, limit;
263 	struct resource *res;
264 
265 	res = child->resource[0];
266 	pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
267 	pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
268 	base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
269 	limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
270 
271 	if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
272 		u16 io_base_hi, io_limit_hi;
273 		pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
274 		pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
275 		base |= (io_base_hi << 16);
276 		limit |= (io_limit_hi << 16);
277 	}
278 
279 	if (base && base <= limit) {
280 		res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
281 		if (!res->start)
282 			res->start = base;
283 		if (!res->end)
284 			res->end = limit + 0xfff;
285 		dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
286 	} else {
287 		dev_printk(KERN_DEBUG, &dev->dev,
288 			 "  bridge window [io  %#06lx-%#06lx] (disabled)\n",
289 				 base, limit);
290 	}
291 }
292 
293 static void __devinit pci_read_bridge_mmio(struct pci_bus *child)
294 {
295 	struct pci_dev *dev = child->self;
296 	u16 mem_base_lo, mem_limit_lo;
297 	unsigned long base, limit;
298 	struct resource *res;
299 
300 	res = child->resource[1];
301 	pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
302 	pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
303 	base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
304 	limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
305 	if (base && base <= limit) {
306 		res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
307 		res->start = base;
308 		res->end = limit + 0xfffff;
309 		dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
310 	} else {
311 		dev_printk(KERN_DEBUG, &dev->dev,
312 			"  bridge window [mem %#010lx-%#010lx] (disabled)\n",
313 					 base, limit + 0xfffff);
314 	}
315 }
316 
317 static void __devinit pci_read_bridge_mmio_pref(struct pci_bus *child)
318 {
319 	struct pci_dev *dev = child->self;
320 	u16 mem_base_lo, mem_limit_lo;
321 	unsigned long base, limit;
322 	struct resource *res;
323 
324 	res = child->resource[2];
325 	pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
326 	pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
327 	base = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
328 	limit = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
329 
330 	if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
331 		u32 mem_base_hi, mem_limit_hi;
332 		pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
333 		pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
334 
335 		/*
336 		 * Some bridges set the base > limit by default, and some
337 		 * (broken) BIOSes do not initialize them.  If we find
338 		 * this, just assume they are not being used.
339 		 */
340 		if (mem_base_hi <= mem_limit_hi) {
341 #if BITS_PER_LONG == 64
342 			base |= ((long) mem_base_hi) << 32;
343 			limit |= ((long) mem_limit_hi) << 32;
344 #else
345 			if (mem_base_hi || mem_limit_hi) {
346 				dev_err(&dev->dev, "can't handle 64-bit "
347 					"address space for bridge\n");
348 				return;
349 			}
350 #endif
351 		}
352 	}
353 	if (base && base <= limit) {
354 		res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
355 					 IORESOURCE_MEM | IORESOURCE_PREFETCH;
356 		if (res->flags & PCI_PREF_RANGE_TYPE_64)
357 			res->flags |= IORESOURCE_MEM_64;
358 		res->start = base;
359 		res->end = limit + 0xfffff;
360 		dev_printk(KERN_DEBUG, &dev->dev, "  bridge window %pR\n", res);
361 	} else {
362 		dev_printk(KERN_DEBUG, &dev->dev,
363 		     "  bridge window [mem %#010lx-%#010lx pref] (disabled)\n",
364 					 base, limit + 0xfffff);
365 	}
366 }
367 
368 void __devinit pci_read_bridge_bases(struct pci_bus *child)
369 {
370 	struct pci_dev *dev = child->self;
371 	struct resource *res;
372 	int i;
373 
374 	if (pci_is_root_bus(child))	/* It's a host bus, nothing to read */
375 		return;
376 
377 	dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
378 		 child->secondary, child->subordinate,
379 		 dev->transparent ? " (subtractive decode)" : "");
380 
381 	pci_bus_remove_resources(child);
382 	for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
383 		child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
384 
385 	pci_read_bridge_io(child);
386 	pci_read_bridge_mmio(child);
387 	pci_read_bridge_mmio_pref(child);
388 
389 	if (dev->transparent) {
390 		pci_bus_for_each_resource(child->parent, res, i) {
391 			if (res) {
392 				pci_bus_add_resource(child, res,
393 						     PCI_SUBTRACTIVE_DECODE);
394 				dev_printk(KERN_DEBUG, &dev->dev,
395 					   "  bridge window %pR (subtractive decode)\n",
396 					   res);
397 			}
398 		}
399 	}
400 }
401 
402 static struct pci_bus * pci_alloc_bus(void)
403 {
404 	struct pci_bus *b;
405 
406 	b = kzalloc(sizeof(*b), GFP_KERNEL);
407 	if (b) {
408 		INIT_LIST_HEAD(&b->node);
409 		INIT_LIST_HEAD(&b->children);
410 		INIT_LIST_HEAD(&b->devices);
411 		INIT_LIST_HEAD(&b->slots);
412 		INIT_LIST_HEAD(&b->resources);
413 		b->max_bus_speed = PCI_SPEED_UNKNOWN;
414 		b->cur_bus_speed = PCI_SPEED_UNKNOWN;
415 	}
416 	return b;
417 }
418 
419 static unsigned char pcix_bus_speed[] = {
420 	PCI_SPEED_UNKNOWN,		/* 0 */
421 	PCI_SPEED_66MHz_PCIX,		/* 1 */
422 	PCI_SPEED_100MHz_PCIX,		/* 2 */
423 	PCI_SPEED_133MHz_PCIX,		/* 3 */
424 	PCI_SPEED_UNKNOWN,		/* 4 */
425 	PCI_SPEED_66MHz_PCIX_ECC,	/* 5 */
426 	PCI_SPEED_100MHz_PCIX_ECC,	/* 6 */
427 	PCI_SPEED_133MHz_PCIX_ECC,	/* 7 */
428 	PCI_SPEED_UNKNOWN,		/* 8 */
429 	PCI_SPEED_66MHz_PCIX_266,	/* 9 */
430 	PCI_SPEED_100MHz_PCIX_266,	/* A */
431 	PCI_SPEED_133MHz_PCIX_266,	/* B */
432 	PCI_SPEED_UNKNOWN,		/* C */
433 	PCI_SPEED_66MHz_PCIX_533,	/* D */
434 	PCI_SPEED_100MHz_PCIX_533,	/* E */
435 	PCI_SPEED_133MHz_PCIX_533	/* F */
436 };
437 
438 static unsigned char pcie_link_speed[] = {
439 	PCI_SPEED_UNKNOWN,		/* 0 */
440 	PCIE_SPEED_2_5GT,		/* 1 */
441 	PCIE_SPEED_5_0GT,		/* 2 */
442 	PCIE_SPEED_8_0GT,		/* 3 */
443 	PCI_SPEED_UNKNOWN,		/* 4 */
444 	PCI_SPEED_UNKNOWN,		/* 5 */
445 	PCI_SPEED_UNKNOWN,		/* 6 */
446 	PCI_SPEED_UNKNOWN,		/* 7 */
447 	PCI_SPEED_UNKNOWN,		/* 8 */
448 	PCI_SPEED_UNKNOWN,		/* 9 */
449 	PCI_SPEED_UNKNOWN,		/* A */
450 	PCI_SPEED_UNKNOWN,		/* B */
451 	PCI_SPEED_UNKNOWN,		/* C */
452 	PCI_SPEED_UNKNOWN,		/* D */
453 	PCI_SPEED_UNKNOWN,		/* E */
454 	PCI_SPEED_UNKNOWN		/* F */
455 };
456 
457 void pcie_update_link_speed(struct pci_bus *bus, u16 linksta)
458 {
459 	bus->cur_bus_speed = pcie_link_speed[linksta & 0xf];
460 }
461 EXPORT_SYMBOL_GPL(pcie_update_link_speed);
462 
463 static unsigned char agp_speeds[] = {
464 	AGP_UNKNOWN,
465 	AGP_1X,
466 	AGP_2X,
467 	AGP_4X,
468 	AGP_8X
469 };
470 
471 static enum pci_bus_speed agp_speed(int agp3, int agpstat)
472 {
473 	int index = 0;
474 
475 	if (agpstat & 4)
476 		index = 3;
477 	else if (agpstat & 2)
478 		index = 2;
479 	else if (agpstat & 1)
480 		index = 1;
481 	else
482 		goto out;
483 
484 	if (agp3) {
485 		index += 2;
486 		if (index == 5)
487 			index = 0;
488 	}
489 
490  out:
491 	return agp_speeds[index];
492 }
493 
494 
495 static void pci_set_bus_speed(struct pci_bus *bus)
496 {
497 	struct pci_dev *bridge = bus->self;
498 	int pos;
499 
500 	pos = pci_find_capability(bridge, PCI_CAP_ID_AGP);
501 	if (!pos)
502 		pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3);
503 	if (pos) {
504 		u32 agpstat, agpcmd;
505 
506 		pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat);
507 		bus->max_bus_speed = agp_speed(agpstat & 8, agpstat & 7);
508 
509 		pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd);
510 		bus->cur_bus_speed = agp_speed(agpstat & 8, agpcmd & 7);
511 	}
512 
513 	pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX);
514 	if (pos) {
515 		u16 status;
516 		enum pci_bus_speed max;
517 		pci_read_config_word(bridge, pos + 2, &status);
518 
519 		if (status & 0x8000) {
520 			max = PCI_SPEED_133MHz_PCIX_533;
521 		} else if (status & 0x4000) {
522 			max = PCI_SPEED_133MHz_PCIX_266;
523 		} else if (status & 0x0002) {
524 			if (((status >> 12) & 0x3) == 2) {
525 				max = PCI_SPEED_133MHz_PCIX_ECC;
526 			} else {
527 				max = PCI_SPEED_133MHz_PCIX;
528 			}
529 		} else {
530 			max = PCI_SPEED_66MHz_PCIX;
531 		}
532 
533 		bus->max_bus_speed = max;
534 		bus->cur_bus_speed = pcix_bus_speed[(status >> 6) & 0xf];
535 
536 		return;
537 	}
538 
539 	pos = pci_find_capability(bridge, PCI_CAP_ID_EXP);
540 	if (pos) {
541 		u32 linkcap;
542 		u16 linksta;
543 
544 		pci_read_config_dword(bridge, pos + PCI_EXP_LNKCAP, &linkcap);
545 		bus->max_bus_speed = pcie_link_speed[linkcap & 0xf];
546 
547 		pci_read_config_word(bridge, pos + PCI_EXP_LNKSTA, &linksta);
548 		pcie_update_link_speed(bus, linksta);
549 	}
550 }
551 
552 
553 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
554 					   struct pci_dev *bridge, int busnr)
555 {
556 	struct pci_bus *child;
557 	int i;
558 
559 	/*
560 	 * Allocate a new bus, and inherit stuff from the parent..
561 	 */
562 	child = pci_alloc_bus();
563 	if (!child)
564 		return NULL;
565 
566 	child->parent = parent;
567 	child->ops = parent->ops;
568 	child->sysdata = parent->sysdata;
569 	child->bus_flags = parent->bus_flags;
570 
571 	/* initialize some portions of the bus device, but don't register it
572 	 * now as the parent is not properly set up yet.  This device will get
573 	 * registered later in pci_bus_add_devices()
574 	 */
575 	child->dev.class = &pcibus_class;
576 	dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
577 
578 	/*
579 	 * Set up the primary, secondary and subordinate
580 	 * bus numbers.
581 	 */
582 	child->number = child->secondary = busnr;
583 	child->primary = parent->secondary;
584 	child->subordinate = 0xff;
585 
586 	if (!bridge)
587 		return child;
588 
589 	child->self = bridge;
590 	child->bridge = get_device(&bridge->dev);
591 
592 	pci_set_bus_speed(child);
593 
594 	/* Set up default resource pointers and names.. */
595 	for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
596 		child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
597 		child->resource[i]->name = child->name;
598 	}
599 	bridge->subordinate = child;
600 
601 	return child;
602 }
603 
604 struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
605 {
606 	struct pci_bus *child;
607 
608 	child = pci_alloc_child_bus(parent, dev, busnr);
609 	if (child) {
610 		down_write(&pci_bus_sem);
611 		list_add_tail(&child->node, &parent->children);
612 		up_write(&pci_bus_sem);
613 	}
614 	return child;
615 }
616 
617 static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
618 {
619 	struct pci_bus *parent = child->parent;
620 
621 	/* Attempts to fix that up are really dangerous unless
622 	   we're going to re-assign all bus numbers. */
623 	if (!pcibios_assign_all_busses())
624 		return;
625 
626 	while (parent->parent && parent->subordinate < max) {
627 		parent->subordinate = max;
628 		pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
629 		parent = parent->parent;
630 	}
631 }
632 
633 /*
634  * If it's a bridge, configure it and scan the bus behind it.
635  * For CardBus bridges, we don't scan behind as the devices will
636  * be handled by the bridge driver itself.
637  *
638  * We need to process bridges in two passes -- first we scan those
639  * already configured by the BIOS and after we are done with all of
640  * them, we proceed to assigning numbers to the remaining buses in
641  * order to avoid overlaps between old and new bus numbers.
642  */
643 int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
644 {
645 	struct pci_bus *child;
646 	int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
647 	u32 buses, i, j = 0;
648 	u16 bctl;
649 	u8 primary, secondary, subordinate;
650 	int broken = 0;
651 
652 	pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
653 	primary = buses & 0xFF;
654 	secondary = (buses >> 8) & 0xFF;
655 	subordinate = (buses >> 16) & 0xFF;
656 
657 	dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
658 		secondary, subordinate, pass);
659 
660 	/* Check if setup is sensible at all */
661 	if (!pass &&
662 	    (primary != bus->number || secondary <= bus->number)) {
663 		dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n");
664 		broken = 1;
665 	}
666 
667 	/* Disable MasterAbortMode during probing to avoid reporting
668 	   of bus errors (in some architectures) */
669 	pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
670 	pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
671 			      bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
672 
673 	if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
674 	    !is_cardbus && !broken) {
675 		unsigned int cmax;
676 		/*
677 		 * Bus already configured by firmware, process it in the first
678 		 * pass and just note the configuration.
679 		 */
680 		if (pass)
681 			goto out;
682 
683 		/*
684 		 * If we already got to this bus through a different bridge,
685 		 * don't re-add it. This can happen with the i450NX chipset.
686 		 *
687 		 * However, we continue to descend down the hierarchy and
688 		 * scan remaining child buses.
689 		 */
690 		child = pci_find_bus(pci_domain_nr(bus), secondary);
691 		if (!child) {
692 			child = pci_add_new_bus(bus, dev, secondary);
693 			if (!child)
694 				goto out;
695 			child->primary = primary;
696 			child->subordinate = subordinate;
697 			child->bridge_ctl = bctl;
698 		}
699 
700 		cmax = pci_scan_child_bus(child);
701 		if (cmax > max)
702 			max = cmax;
703 		if (child->subordinate > max)
704 			max = child->subordinate;
705 	} else {
706 		/*
707 		 * We need to assign a number to this bus which we always
708 		 * do in the second pass.
709 		 */
710 		if (!pass) {
711 			if (pcibios_assign_all_busses() || broken)
712 				/* Temporarily disable forwarding of the
713 				   configuration cycles on all bridges in
714 				   this bus segment to avoid possible
715 				   conflicts in the second pass between two
716 				   bridges programmed with overlapping
717 				   bus ranges. */
718 				pci_write_config_dword(dev, PCI_PRIMARY_BUS,
719 						       buses & ~0xffffff);
720 			goto out;
721 		}
722 
723 		/* Clear errors */
724 		pci_write_config_word(dev, PCI_STATUS, 0xffff);
725 
726 		/* Prevent assigning a bus number that already exists.
727 		 * This can happen when a bridge is hot-plugged */
728 		if (pci_find_bus(pci_domain_nr(bus), max+1))
729 			goto out;
730 		child = pci_add_new_bus(bus, dev, ++max);
731 		if (!child)
732 			goto out;
733 		buses = (buses & 0xff000000)
734 		      | ((unsigned int)(child->primary)     <<  0)
735 		      | ((unsigned int)(child->secondary)   <<  8)
736 		      | ((unsigned int)(child->subordinate) << 16);
737 
738 		/*
739 		 * yenta.c forces a secondary latency timer of 176.
740 		 * Copy that behaviour here.
741 		 */
742 		if (is_cardbus) {
743 			buses &= ~0xff000000;
744 			buses |= CARDBUS_LATENCY_TIMER << 24;
745 		}
746 
747 		/*
748 		 * We need to blast all three values with a single write.
749 		 */
750 		pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
751 
752 		if (!is_cardbus) {
753 			child->bridge_ctl = bctl;
754 			/*
755 			 * Adjust subordinate busnr in parent buses.
756 			 * We do this before scanning for children because
757 			 * some devices may not be detected if the bios
758 			 * was lazy.
759 			 */
760 			pci_fixup_parent_subordinate_busnr(child, max);
761 			/* Now we can scan all subordinate buses... */
762 			max = pci_scan_child_bus(child);
763 			/*
764 			 * now fix it up again since we have found
765 			 * the real value of max.
766 			 */
767 			pci_fixup_parent_subordinate_busnr(child, max);
768 		} else {
769 			/*
770 			 * For CardBus bridges, we leave 4 bus numbers
771 			 * as cards with a PCI-to-PCI bridge can be
772 			 * inserted later.
773 			 */
774 			for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
775 				struct pci_bus *parent = bus;
776 				if (pci_find_bus(pci_domain_nr(bus),
777 							max+i+1))
778 					break;
779 				while (parent->parent) {
780 					if ((!pcibios_assign_all_busses()) &&
781 					    (parent->subordinate > max) &&
782 					    (parent->subordinate <= max+i)) {
783 						j = 1;
784 					}
785 					parent = parent->parent;
786 				}
787 				if (j) {
788 					/*
789 					 * Often, there are two cardbus bridges
790 					 * -- try to leave one valid bus number
791 					 * for each one.
792 					 */
793 					i /= 2;
794 					break;
795 				}
796 			}
797 			max += i;
798 			pci_fixup_parent_subordinate_busnr(child, max);
799 		}
800 		/*
801 		 * Set the subordinate bus number to its real value.
802 		 */
803 		child->subordinate = max;
804 		pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
805 	}
806 
807 	sprintf(child->name,
808 		(is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
809 		pci_domain_nr(bus), child->number);
810 
811 	/* Has only triggered on CardBus, fixup is in yenta_socket */
812 	while (bus->parent) {
813 		if ((child->subordinate > bus->subordinate) ||
814 		    (child->number > bus->subordinate) ||
815 		    (child->number < bus->number) ||
816 		    (child->subordinate < bus->number)) {
817 			dev_info(&child->dev, "[bus %02x-%02x] %s "
818 				"hidden behind%s bridge %s [bus %02x-%02x]\n",
819 				child->number, child->subordinate,
820 				(bus->number > child->subordinate &&
821 				 bus->subordinate < child->number) ?
822 					"wholly" : "partially",
823 				bus->self->transparent ? " transparent" : "",
824 				dev_name(&bus->dev),
825 				bus->number, bus->subordinate);
826 		}
827 		bus = bus->parent;
828 	}
829 
830 out:
831 	pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
832 
833 	return max;
834 }
835 
836 /*
837  * Read interrupt line and base address registers.
838  * The architecture-dependent code can tweak these, of course.
839  */
840 static void pci_read_irq(struct pci_dev *dev)
841 {
842 	unsigned char irq;
843 
844 	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
845 	dev->pin = irq;
846 	if (irq)
847 		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
848 	dev->irq = irq;
849 }
850 
851 void set_pcie_port_type(struct pci_dev *pdev)
852 {
853 	int pos;
854 	u16 reg16;
855 
856 	pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
857 	if (!pos)
858 		return;
859 	pdev->is_pcie = 1;
860 	pdev->pcie_cap = pos;
861 	pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
862 	pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
863 }
864 
865 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
866 {
867 	int pos;
868 	u16 reg16;
869 	u32 reg32;
870 
871 	pos = pci_pcie_cap(pdev);
872 	if (!pos)
873 		return;
874 	pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
875 	if (!(reg16 & PCI_EXP_FLAGS_SLOT))
876 		return;
877 	pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, &reg32);
878 	if (reg32 & PCI_EXP_SLTCAP_HPC)
879 		pdev->is_hotplug_bridge = 1;
880 }
881 
882 #define LEGACY_IO_RESOURCE	(IORESOURCE_IO | IORESOURCE_PCI_FIXED)
883 
884 /**
885  * pci_setup_device - fill in class and map information of a device
886  * @dev: the device structure to fill
887  *
888  * Initialize the device structure with information about the device's
889  * vendor,class,memory and IO-space addresses,IRQ lines etc.
890  * Called at initialisation of the PCI subsystem and by CardBus services.
891  * Returns 0 on success and negative if unknown type of device (not normal,
892  * bridge or CardBus).
893  */
894 int pci_setup_device(struct pci_dev *dev)
895 {
896 	u32 class;
897 	u8 hdr_type;
898 	struct pci_slot *slot;
899 	int pos = 0;
900 
901 	if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
902 		return -EIO;
903 
904 	dev->sysdata = dev->bus->sysdata;
905 	dev->dev.parent = dev->bus->bridge;
906 	dev->dev.bus = &pci_bus_type;
907 	dev->hdr_type = hdr_type & 0x7f;
908 	dev->multifunction = !!(hdr_type & 0x80);
909 	dev->error_state = pci_channel_io_normal;
910 	set_pcie_port_type(dev);
911 
912 	list_for_each_entry(slot, &dev->bus->slots, list)
913 		if (PCI_SLOT(dev->devfn) == slot->number)
914 			dev->slot = slot;
915 
916 	/* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
917 	   set this higher, assuming the system even supports it.  */
918 	dev->dma_mask = 0xffffffff;
919 
920 	dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
921 		     dev->bus->number, PCI_SLOT(dev->devfn),
922 		     PCI_FUNC(dev->devfn));
923 
924 	pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
925 	dev->revision = class & 0xff;
926 	class >>= 8;				    /* upper 3 bytes */
927 	dev->class = class;
928 	class >>= 8;
929 
930 	dev_printk(KERN_DEBUG, &dev->dev, "[%04x:%04x] type %d class %#08x\n",
931 		   dev->vendor, dev->device, dev->hdr_type, class);
932 
933 	/* need to have dev->class ready */
934 	dev->cfg_size = pci_cfg_space_size(dev);
935 
936 	/* "Unknown power state" */
937 	dev->current_state = PCI_UNKNOWN;
938 
939 	/* Early fixups, before probing the BARs */
940 	pci_fixup_device(pci_fixup_early, dev);
941 	/* device class may be changed after fixup */
942 	class = dev->class >> 8;
943 
944 	switch (dev->hdr_type) {		    /* header type */
945 	case PCI_HEADER_TYPE_NORMAL:		    /* standard header */
946 		if (class == PCI_CLASS_BRIDGE_PCI)
947 			goto bad;
948 		pci_read_irq(dev);
949 		pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
950 		pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
951 		pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
952 
953 		/*
954 		 *	Do the ugly legacy mode stuff here rather than broken chip
955 		 *	quirk code. Legacy mode ATA controllers have fixed
956 		 *	addresses. These are not always echoed in BAR0-3, and
957 		 *	BAR0-3 in a few cases contain junk!
958 		 */
959 		if (class == PCI_CLASS_STORAGE_IDE) {
960 			u8 progif;
961 			pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
962 			if ((progif & 1) == 0) {
963 				dev->resource[0].start = 0x1F0;
964 				dev->resource[0].end = 0x1F7;
965 				dev->resource[0].flags = LEGACY_IO_RESOURCE;
966 				dev->resource[1].start = 0x3F6;
967 				dev->resource[1].end = 0x3F6;
968 				dev->resource[1].flags = LEGACY_IO_RESOURCE;
969 			}
970 			if ((progif & 4) == 0) {
971 				dev->resource[2].start = 0x170;
972 				dev->resource[2].end = 0x177;
973 				dev->resource[2].flags = LEGACY_IO_RESOURCE;
974 				dev->resource[3].start = 0x376;
975 				dev->resource[3].end = 0x376;
976 				dev->resource[3].flags = LEGACY_IO_RESOURCE;
977 			}
978 		}
979 		break;
980 
981 	case PCI_HEADER_TYPE_BRIDGE:		    /* bridge header */
982 		if (class != PCI_CLASS_BRIDGE_PCI)
983 			goto bad;
984 		/* The PCI-to-PCI bridge spec requires that subtractive
985 		   decoding (i.e. transparent) bridge must have programming
986 		   interface code of 0x01. */
987 		pci_read_irq(dev);
988 		dev->transparent = ((dev->class & 0xff) == 1);
989 		pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
990 		set_pcie_hotplug_bridge(dev);
991 		pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
992 		if (pos) {
993 			pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
994 			pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
995 		}
996 		break;
997 
998 	case PCI_HEADER_TYPE_CARDBUS:		    /* CardBus bridge header */
999 		if (class != PCI_CLASS_BRIDGE_CARDBUS)
1000 			goto bad;
1001 		pci_read_irq(dev);
1002 		pci_read_bases(dev, 1, 0);
1003 		pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
1004 		pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
1005 		break;
1006 
1007 	default:				    /* unknown header */
1008 		dev_err(&dev->dev, "unknown header type %02x, "
1009 			"ignoring device\n", dev->hdr_type);
1010 		return -EIO;
1011 
1012 	bad:
1013 		dev_err(&dev->dev, "ignoring class %02x (doesn't match header "
1014 			"type %02x)\n", class, dev->hdr_type);
1015 		dev->class = PCI_CLASS_NOT_DEFINED;
1016 	}
1017 
1018 	/* We found a fine healthy device, go go go... */
1019 	return 0;
1020 }
1021 
1022 static void pci_release_capabilities(struct pci_dev *dev)
1023 {
1024 	pci_vpd_release(dev);
1025 	pci_iov_release(dev);
1026 }
1027 
1028 /**
1029  * pci_release_dev - free a pci device structure when all users of it are finished.
1030  * @dev: device that's been disconnected
1031  *
1032  * Will be called only by the device core when all users of this pci device are
1033  * done.
1034  */
1035 static void pci_release_dev(struct device *dev)
1036 {
1037 	struct pci_dev *pci_dev;
1038 
1039 	pci_dev = to_pci_dev(dev);
1040 	pci_release_capabilities(pci_dev);
1041 	kfree(pci_dev);
1042 }
1043 
1044 /**
1045  * pci_cfg_space_size - get the configuration space size of the PCI device.
1046  * @dev: PCI device
1047  *
1048  * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
1049  * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
1050  * access it.  Maybe we don't have a way to generate extended config space
1051  * accesses, or the device is behind a reverse Express bridge.  So we try
1052  * reading the dword at 0x100 which must either be 0 or a valid extended
1053  * capability header.
1054  */
1055 int pci_cfg_space_size_ext(struct pci_dev *dev)
1056 {
1057 	u32 status;
1058 	int pos = PCI_CFG_SPACE_SIZE;
1059 
1060 	if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
1061 		goto fail;
1062 	if (status == 0xffffffff)
1063 		goto fail;
1064 
1065 	return PCI_CFG_SPACE_EXP_SIZE;
1066 
1067  fail:
1068 	return PCI_CFG_SPACE_SIZE;
1069 }
1070 
1071 int pci_cfg_space_size(struct pci_dev *dev)
1072 {
1073 	int pos;
1074 	u32 status;
1075 	u16 class;
1076 
1077 	class = dev->class >> 8;
1078 	if (class == PCI_CLASS_BRIDGE_HOST)
1079 		return pci_cfg_space_size_ext(dev);
1080 
1081 	pos = pci_pcie_cap(dev);
1082 	if (!pos) {
1083 		pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1084 		if (!pos)
1085 			goto fail;
1086 
1087 		pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
1088 		if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
1089 			goto fail;
1090 	}
1091 
1092 	return pci_cfg_space_size_ext(dev);
1093 
1094  fail:
1095 	return PCI_CFG_SPACE_SIZE;
1096 }
1097 
1098 static void pci_release_bus_bridge_dev(struct device *dev)
1099 {
1100 	kfree(dev);
1101 }
1102 
1103 struct pci_dev *alloc_pci_dev(void)
1104 {
1105 	struct pci_dev *dev;
1106 
1107 	dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
1108 	if (!dev)
1109 		return NULL;
1110 
1111 	INIT_LIST_HEAD(&dev->bus_list);
1112 
1113 	return dev;
1114 }
1115 EXPORT_SYMBOL(alloc_pci_dev);
1116 
1117 /*
1118  * Read the config data for a PCI device, sanity-check it
1119  * and fill in the dev structure...
1120  */
1121 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1122 {
1123 	struct pci_dev *dev;
1124 	u32 l;
1125 	int delay = 1;
1126 
1127 	if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1128 		return NULL;
1129 
1130 	/* some broken boards return 0 or ~0 if a slot is empty: */
1131 	if (l == 0xffffffff || l == 0x00000000 ||
1132 	    l == 0x0000ffff || l == 0xffff0000)
1133 		return NULL;
1134 
1135 	/* Configuration request Retry Status */
1136 	while (l == 0xffff0001) {
1137 		msleep(delay);
1138 		delay *= 2;
1139 		if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
1140 			return NULL;
1141 		/* Card hasn't responded in 60 seconds?  Must be stuck. */
1142 		if (delay > 60 * 1000) {
1143 			printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
1144 					"responding\n", pci_domain_nr(bus),
1145 					bus->number, PCI_SLOT(devfn),
1146 					PCI_FUNC(devfn));
1147 			return NULL;
1148 		}
1149 	}
1150 
1151 	dev = alloc_pci_dev();
1152 	if (!dev)
1153 		return NULL;
1154 
1155 	dev->bus = bus;
1156 	dev->devfn = devfn;
1157 	dev->vendor = l & 0xffff;
1158 	dev->device = (l >> 16) & 0xffff;
1159 
1160 	if (pci_setup_device(dev)) {
1161 		kfree(dev);
1162 		return NULL;
1163 	}
1164 
1165 	return dev;
1166 }
1167 
1168 static void pci_init_capabilities(struct pci_dev *dev)
1169 {
1170 	/* MSI/MSI-X list */
1171 	pci_msi_init_pci_dev(dev);
1172 
1173 	/* Buffers for saving PCIe and PCI-X capabilities */
1174 	pci_allocate_cap_save_buffers(dev);
1175 
1176 	/* Power Management */
1177 	pci_pm_init(dev);
1178 	platform_pci_wakeup_init(dev);
1179 
1180 	/* Vital Product Data */
1181 	pci_vpd_pci22_init(dev);
1182 
1183 	/* Alternative Routing-ID Forwarding */
1184 	pci_enable_ari(dev);
1185 
1186 	/* Single Root I/O Virtualization */
1187 	pci_iov_init(dev);
1188 
1189 	/* Enable ACS P2P upstream forwarding */
1190 	pci_enable_acs(dev);
1191 }
1192 
1193 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1194 {
1195 	device_initialize(&dev->dev);
1196 	dev->dev.release = pci_release_dev;
1197 	pci_dev_get(dev);
1198 
1199 	dev->dev.dma_mask = &dev->dma_mask;
1200 	dev->dev.dma_parms = &dev->dma_parms;
1201 	dev->dev.coherent_dma_mask = 0xffffffffull;
1202 
1203 	pci_set_dma_max_seg_size(dev, 65536);
1204 	pci_set_dma_seg_boundary(dev, 0xffffffff);
1205 
1206 	/* Fix up broken headers */
1207 	pci_fixup_device(pci_fixup_header, dev);
1208 
1209 	/* Clear the state_saved flag. */
1210 	dev->state_saved = false;
1211 
1212 	/* Initialize various capabilities */
1213 	pci_init_capabilities(dev);
1214 
1215 	/*
1216 	 * Add the device to our list of discovered devices
1217 	 * and the bus list for fixup functions, etc.
1218 	 */
1219 	down_write(&pci_bus_sem);
1220 	list_add_tail(&dev->bus_list, &bus->devices);
1221 	up_write(&pci_bus_sem);
1222 }
1223 
1224 struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
1225 {
1226 	struct pci_dev *dev;
1227 
1228 	dev = pci_get_slot(bus, devfn);
1229 	if (dev) {
1230 		pci_dev_put(dev);
1231 		return dev;
1232 	}
1233 
1234 	dev = pci_scan_device(bus, devfn);
1235 	if (!dev)
1236 		return NULL;
1237 
1238 	pci_device_add(dev, bus);
1239 
1240 	return dev;
1241 }
1242 EXPORT_SYMBOL(pci_scan_single_device);
1243 
1244 static unsigned next_ari_fn(struct pci_dev *dev, unsigned fn)
1245 {
1246 	u16 cap;
1247 	unsigned pos, next_fn;
1248 
1249 	if (!dev)
1250 		return 0;
1251 
1252 	pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI);
1253 	if (!pos)
1254 		return 0;
1255 	pci_read_config_word(dev, pos + 4, &cap);
1256 	next_fn = cap >> 8;
1257 	if (next_fn <= fn)
1258 		return 0;
1259 	return next_fn;
1260 }
1261 
1262 static unsigned next_trad_fn(struct pci_dev *dev, unsigned fn)
1263 {
1264 	return (fn + 1) % 8;
1265 }
1266 
1267 static unsigned no_next_fn(struct pci_dev *dev, unsigned fn)
1268 {
1269 	return 0;
1270 }
1271 
1272 static int only_one_child(struct pci_bus *bus)
1273 {
1274 	struct pci_dev *parent = bus->self;
1275 	if (!parent || !pci_is_pcie(parent))
1276 		return 0;
1277 	if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT ||
1278 	    parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
1279 		return 1;
1280 	return 0;
1281 }
1282 
1283 /**
1284  * pci_scan_slot - scan a PCI slot on a bus for devices.
1285  * @bus: PCI bus to scan
1286  * @devfn: slot number to scan (must have zero function.)
1287  *
1288  * Scan a PCI slot on the specified PCI bus for devices, adding
1289  * discovered devices to the @bus->devices list.  New devices
1290  * will not have is_added set.
1291  *
1292  * Returns the number of new devices found.
1293  */
1294 int pci_scan_slot(struct pci_bus *bus, int devfn)
1295 {
1296 	unsigned fn, nr = 0;
1297 	struct pci_dev *dev;
1298 	unsigned (*next_fn)(struct pci_dev *, unsigned) = no_next_fn;
1299 
1300 	if (only_one_child(bus) && (devfn > 0))
1301 		return 0; /* Already scanned the entire slot */
1302 
1303 	dev = pci_scan_single_device(bus, devfn);
1304 	if (!dev)
1305 		return 0;
1306 	if (!dev->is_added)
1307 		nr++;
1308 
1309 	if (pci_ari_enabled(bus))
1310 		next_fn = next_ari_fn;
1311 	else if (dev->multifunction)
1312 		next_fn = next_trad_fn;
1313 
1314 	for (fn = next_fn(dev, 0); fn > 0; fn = next_fn(dev, fn)) {
1315 		dev = pci_scan_single_device(bus, devfn + fn);
1316 		if (dev) {
1317 			if (!dev->is_added)
1318 				nr++;
1319 			dev->multifunction = 1;
1320 		}
1321 	}
1322 
1323 	/* only one slot has pcie device */
1324 	if (bus->self && nr)
1325 		pcie_aspm_init_link_state(bus->self);
1326 
1327 	return nr;
1328 }
1329 
1330 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1331 {
1332 	unsigned int devfn, pass, max = bus->secondary;
1333 	struct pci_dev *dev;
1334 
1335 	dev_dbg(&bus->dev, "scanning bus\n");
1336 
1337 	/* Go find them, Rover! */
1338 	for (devfn = 0; devfn < 0x100; devfn += 8)
1339 		pci_scan_slot(bus, devfn);
1340 
1341 	/* Reserve buses for SR-IOV capability. */
1342 	max += pci_iov_bus_range(bus);
1343 
1344 	/*
1345 	 * After performing arch-dependent fixup of the bus, look behind
1346 	 * all PCI-to-PCI bridges on this bus.
1347 	 */
1348 	if (!bus->is_added) {
1349 		dev_dbg(&bus->dev, "fixups for bus\n");
1350 		pcibios_fixup_bus(bus);
1351 		if (pci_is_root_bus(bus))
1352 			bus->is_added = 1;
1353 	}
1354 
1355 	for (pass=0; pass < 2; pass++)
1356 		list_for_each_entry(dev, &bus->devices, bus_list) {
1357 			if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1358 			    dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1359 				max = pci_scan_bridge(bus, dev, max, pass);
1360 		}
1361 
1362 	/*
1363 	 * We've scanned the bus and so we know all about what's on
1364 	 * the other side of any bridges that may be on this bus plus
1365 	 * any devices.
1366 	 *
1367 	 * Return how far we've got finding sub-buses.
1368 	 */
1369 	dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1370 	return max;
1371 }
1372 
1373 struct pci_bus * pci_create_bus(struct device *parent,
1374 		int bus, struct pci_ops *ops, void *sysdata)
1375 {
1376 	int error;
1377 	struct pci_bus *b, *b2;
1378 	struct device *dev;
1379 
1380 	b = pci_alloc_bus();
1381 	if (!b)
1382 		return NULL;
1383 
1384 	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1385 	if (!dev){
1386 		kfree(b);
1387 		return NULL;
1388 	}
1389 
1390 	b->sysdata = sysdata;
1391 	b->ops = ops;
1392 
1393 	b2 = pci_find_bus(pci_domain_nr(b), bus);
1394 	if (b2) {
1395 		/* If we already got to this bus through a different bridge, ignore it */
1396 		dev_dbg(&b2->dev, "bus already known\n");
1397 		goto err_out;
1398 	}
1399 
1400 	down_write(&pci_bus_sem);
1401 	list_add_tail(&b->node, &pci_root_buses);
1402 	up_write(&pci_bus_sem);
1403 
1404 	dev->parent = parent;
1405 	dev->release = pci_release_bus_bridge_dev;
1406 	dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
1407 	error = device_register(dev);
1408 	if (error)
1409 		goto dev_reg_err;
1410 	b->bridge = get_device(dev);
1411 	device_enable_async_suspend(b->bridge);
1412 
1413 	if (!parent)
1414 		set_dev_node(b->bridge, pcibus_to_node(b));
1415 
1416 	b->dev.class = &pcibus_class;
1417 	b->dev.parent = b->bridge;
1418 	dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
1419 	error = device_register(&b->dev);
1420 	if (error)
1421 		goto class_dev_reg_err;
1422 
1423 	/* Create legacy_io and legacy_mem files for this bus */
1424 	pci_create_legacy_files(b);
1425 
1426 	b->number = b->secondary = bus;
1427 	b->resource[0] = &ioport_resource;
1428 	b->resource[1] = &iomem_resource;
1429 
1430 	return b;
1431 
1432 class_dev_reg_err:
1433 	device_unregister(dev);
1434 dev_reg_err:
1435 	down_write(&pci_bus_sem);
1436 	list_del(&b->node);
1437 	up_write(&pci_bus_sem);
1438 err_out:
1439 	kfree(dev);
1440 	kfree(b);
1441 	return NULL;
1442 }
1443 
1444 struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
1445 		int bus, struct pci_ops *ops, void *sysdata)
1446 {
1447 	struct pci_bus *b;
1448 
1449 	b = pci_create_bus(parent, bus, ops, sysdata);
1450 	if (b)
1451 		b->subordinate = pci_scan_child_bus(b);
1452 	return b;
1453 }
1454 EXPORT_SYMBOL(pci_scan_bus_parented);
1455 
1456 #ifdef CONFIG_HOTPLUG
1457 /**
1458  * pci_rescan_bus - scan a PCI bus for devices.
1459  * @bus: PCI bus to scan
1460  *
1461  * Scan a PCI bus and child buses for new devices, adds them,
1462  * and enables them.
1463  *
1464  * Returns the max number of subordinate bus discovered.
1465  */
1466 unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
1467 {
1468 	unsigned int max;
1469 	struct pci_dev *dev;
1470 
1471 	max = pci_scan_child_bus(bus);
1472 
1473 	down_read(&pci_bus_sem);
1474 	list_for_each_entry(dev, &bus->devices, bus_list)
1475 		if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1476 		    dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1477 			if (dev->subordinate)
1478 				pci_bus_size_bridges(dev->subordinate);
1479 	up_read(&pci_bus_sem);
1480 
1481 	pci_bus_assign_resources(bus);
1482 	pci_enable_bridges(bus);
1483 	pci_bus_add_devices(bus);
1484 
1485 	return max;
1486 }
1487 EXPORT_SYMBOL_GPL(pci_rescan_bus);
1488 
1489 EXPORT_SYMBOL(pci_add_new_bus);
1490 EXPORT_SYMBOL(pci_scan_slot);
1491 EXPORT_SYMBOL(pci_scan_bridge);
1492 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1493 #endif
1494 
1495 static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
1496 {
1497 	const struct pci_dev *a = to_pci_dev(d_a);
1498 	const struct pci_dev *b = to_pci_dev(d_b);
1499 
1500 	if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
1501 	else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
1502 
1503 	if      (a->bus->number < b->bus->number) return -1;
1504 	else if (a->bus->number > b->bus->number) return  1;
1505 
1506 	if      (a->devfn < b->devfn) return -1;
1507 	else if (a->devfn > b->devfn) return  1;
1508 
1509 	return 0;
1510 }
1511 
1512 void __init pci_sort_breadthfirst(void)
1513 {
1514 	bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
1515 }
1516