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