]> err.no Git - linux-2.6/blob - drivers/pci/probe.c
x86: work around MTRR mask setting, v2
[linux-2.6] / drivers / pci / probe.c
1 /*
2  * probe.c - PCI detection and setup code
3  */
4
5 #include <linux/kernel.h>
6 #include <linux/delay.h>
7 #include <linux/init.h>
8 #include <linux/pci.h>
9 #include <linux/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 #define PCI_CFG_SPACE_SIZE      256
18 #define PCI_CFG_SPACE_EXP_SIZE  4096
19
20 /* Ugh.  Need to stop exporting this to modules. */
21 LIST_HEAD(pci_root_buses);
22 EXPORT_SYMBOL(pci_root_buses);
23
24
25 static int find_anything(struct device *dev, void *data)
26 {
27         return 1;
28 }
29
30 /*
31  * Some device drivers need know if pci is initiated.
32  * Basically, we think pci is not initiated when there
33  * is no device to be found on the pci_bus_type.
34  */
35 int no_pci_devices(void)
36 {
37         struct device *dev;
38         int no_devices;
39
40         dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
41         no_devices = (dev == NULL);
42         put_device(dev);
43         return no_devices;
44 }
45 EXPORT_SYMBOL(no_pci_devices);
46
47 #ifdef HAVE_PCI_LEGACY
48 /**
49  * pci_create_legacy_files - create legacy I/O port and memory files
50  * @b: bus to create files under
51  *
52  * Some platforms allow access to legacy I/O port and ISA memory space on
53  * a per-bus basis.  This routine creates the files and ties them into
54  * their associated read, write and mmap files from pci-sysfs.c
55  *
56  * On error unwind, but don't propogate the error to the caller
57  * as it is ok to set up the PCI bus without these files.
58  */
59 static void pci_create_legacy_files(struct pci_bus *b)
60 {
61         int error;
62
63         b->legacy_io = kzalloc(sizeof(struct bin_attribute) * 2,
64                                GFP_ATOMIC);
65         if (!b->legacy_io)
66                 goto kzalloc_err;
67
68         b->legacy_io->attr.name = "legacy_io";
69         b->legacy_io->size = 0xffff;
70         b->legacy_io->attr.mode = S_IRUSR | S_IWUSR;
71         b->legacy_io->read = pci_read_legacy_io;
72         b->legacy_io->write = pci_write_legacy_io;
73         error = device_create_bin_file(&b->dev, b->legacy_io);
74         if (error)
75                 goto legacy_io_err;
76
77         /* Allocated above after the legacy_io struct */
78         b->legacy_mem = b->legacy_io + 1;
79         b->legacy_mem->attr.name = "legacy_mem";
80         b->legacy_mem->size = 1024*1024;
81         b->legacy_mem->attr.mode = S_IRUSR | S_IWUSR;
82         b->legacy_mem->mmap = pci_mmap_legacy_mem;
83         error = device_create_bin_file(&b->dev, b->legacy_mem);
84         if (error)
85                 goto legacy_mem_err;
86
87         return;
88
89 legacy_mem_err:
90         device_remove_bin_file(&b->dev, b->legacy_io);
91 legacy_io_err:
92         kfree(b->legacy_io);
93         b->legacy_io = NULL;
94 kzalloc_err:
95         printk(KERN_WARNING "pci: warning: could not create legacy I/O port "
96                "and ISA memory resources to sysfs\n");
97         return;
98 }
99
100 void pci_remove_legacy_files(struct pci_bus *b)
101 {
102         if (b->legacy_io) {
103                 device_remove_bin_file(&b->dev, b->legacy_io);
104                 device_remove_bin_file(&b->dev, b->legacy_mem);
105                 kfree(b->legacy_io); /* both are allocated here */
106         }
107 }
108 #else /* !HAVE_PCI_LEGACY */
109 static inline void pci_create_legacy_files(struct pci_bus *bus) { return; }
110 void pci_remove_legacy_files(struct pci_bus *bus) { return; }
111 #endif /* HAVE_PCI_LEGACY */
112
113 /*
114  * PCI Bus Class Devices
115  */
116 static ssize_t pci_bus_show_cpuaffinity(struct device *dev,
117                                         int type,
118                                         struct device_attribute *attr,
119                                         char *buf)
120 {
121         int ret;
122         cpumask_t cpumask;
123
124         cpumask = pcibus_to_cpumask(to_pci_bus(dev));
125         ret = type?
126                 cpulist_scnprintf(buf, PAGE_SIZE-2, cpumask):
127                 cpumask_scnprintf(buf, PAGE_SIZE-2, cpumask);
128         buf[ret++] = '\n';
129         buf[ret] = '\0';
130         return ret;
131 }
132
133 static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
134                                         struct device_attribute *attr,
135                                         char *buf)
136 {
137         return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
138 }
139
140 static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
141                                         struct device_attribute *attr,
142                                         char *buf)
143 {
144         return pci_bus_show_cpuaffinity(dev, 1, attr, buf);
145 }
146
147 DEVICE_ATTR(cpuaffinity,     S_IRUGO, pci_bus_show_cpumaskaffinity, NULL);
148 DEVICE_ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL);
149
150 /*
151  * PCI Bus Class
152  */
153 static void release_pcibus_dev(struct device *dev)
154 {
155         struct pci_bus *pci_bus = to_pci_bus(dev);
156
157         if (pci_bus->bridge)
158                 put_device(pci_bus->bridge);
159         kfree(pci_bus);
160 }
161
162 static struct class pcibus_class = {
163         .name           = "pci_bus",
164         .dev_release    = &release_pcibus_dev,
165 };
166
167 static int __init pcibus_class_init(void)
168 {
169         return class_register(&pcibus_class);
170 }
171 postcore_initcall(pcibus_class_init);
172
173 /*
174  * Translate the low bits of the PCI base
175  * to the resource type
176  */
177 static inline unsigned int pci_calc_resource_flags(unsigned int flags)
178 {
179         if (flags & PCI_BASE_ADDRESS_SPACE_IO)
180                 return IORESOURCE_IO;
181
182         if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
183                 return IORESOURCE_MEM | IORESOURCE_PREFETCH;
184
185         return IORESOURCE_MEM;
186 }
187
188 static u64 pci_size(u64 base, u64 maxbase, u64 mask)
189 {
190         u64 size = mask & maxbase;      /* Find the significant bits */
191         if (!size)
192                 return 0;
193
194         /* Get the lowest of them to find the decode size, and
195            from that the extent.  */
196         size = (size & ~(size-1)) - 1;
197
198         /* base == maxbase can be valid only if the BAR has
199            already been programmed with all 1s.  */
200         if (base == maxbase && ((base | size) & mask) != mask)
201                 return 0;
202
203         return size;
204 }
205
206 enum pci_bar_type {
207         pci_bar_unknown,        /* Standard PCI BAR probe */
208         pci_bar_io,             /* An io port BAR */
209         pci_bar_mem32,          /* A 32-bit memory BAR */
210         pci_bar_mem64,          /* A 64-bit memory BAR */
211 };
212
213 static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
214 {
215         if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
216                 res->flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
217                 return pci_bar_io;
218         }
219
220         res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
221
222         if (res->flags == PCI_BASE_ADDRESS_MEM_TYPE_64)
223                 return pci_bar_mem64;
224         return pci_bar_mem32;
225 }
226
227 /*
228  * If the type is not unknown, we assume that the lowest bit is 'enable'.
229  * Returns 1 if the BAR was 64-bit and 0 if it was 32-bit.
230  */
231 static int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
232                         struct resource *res, unsigned int pos)
233 {
234         u32 l, sz, mask;
235
236         mask = type ? ~PCI_ROM_ADDRESS_ENABLE : ~0;
237
238         res->name = pci_name(dev);
239
240         pci_read_config_dword(dev, pos, &l);
241         pci_write_config_dword(dev, pos, mask);
242         pci_read_config_dword(dev, pos, &sz);
243         pci_write_config_dword(dev, pos, l);
244
245         /*
246          * All bits set in sz means the device isn't working properly.
247          * If the BAR isn't implemented, all bits must be 0.  If it's a
248          * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
249          * 1 must be clear.
250          */
251         if (!sz || sz == 0xffffffff)
252                 goto fail;
253
254         /*
255          * I don't know how l can have all bits set.  Copied from old code.
256          * Maybe it fixes a bug on some ancient platform.
257          */
258         if (l == 0xffffffff)
259                 l = 0;
260
261         if (type == pci_bar_unknown) {
262                 type = decode_bar(res, l);
263                 res->flags |= pci_calc_resource_flags(l) | IORESOURCE_SIZEALIGN;
264                 if (type == pci_bar_io) {
265                         l &= PCI_BASE_ADDRESS_IO_MASK;
266                         mask = PCI_BASE_ADDRESS_IO_MASK & 0xffff;
267                 } else {
268                         l &= PCI_BASE_ADDRESS_MEM_MASK;
269                         mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
270                 }
271         } else {
272                 res->flags |= (l & IORESOURCE_ROM_ENABLE);
273                 l &= PCI_ROM_ADDRESS_MASK;
274                 mask = (u32)PCI_ROM_ADDRESS_MASK;
275         }
276
277         if (type == pci_bar_mem64) {
278                 u64 l64 = l;
279                 u64 sz64 = sz;
280                 u64 mask64 = mask | (u64)~0 << 32;
281
282                 pci_read_config_dword(dev, pos + 4, &l);
283                 pci_write_config_dword(dev, pos + 4, ~0);
284                 pci_read_config_dword(dev, pos + 4, &sz);
285                 pci_write_config_dword(dev, pos + 4, l);
286
287                 l64 |= ((u64)l << 32);
288                 sz64 |= ((u64)sz << 32);
289
290                 sz64 = pci_size(l64, sz64, mask64);
291
292                 if (!sz64)
293                         goto fail;
294
295                 if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
296                         dev_err(&dev->dev, "can't handle 64-bit BAR\n");
297                         goto fail;
298                 } else if ((sizeof(resource_size_t) < 8) && l) {
299                         /* Address above 32-bit boundary; disable the BAR */
300                         pci_write_config_dword(dev, pos, 0);
301                         pci_write_config_dword(dev, pos + 4, 0);
302                         res->start = 0;
303                         res->end = sz64;
304                 } else {
305                         res->start = l64;
306                         res->end = l64 + sz64;
307                 }
308         } else {
309                 sz = pci_size(l, sz, mask);
310
311                 if (!sz)
312                         goto fail;
313
314                 res->start = l;
315                 res->end = l + sz;
316         }
317
318  out:
319         return (type == pci_bar_mem64) ? 1 : 0;
320  fail:
321         res->flags = 0;
322         goto out;
323 }
324
325 static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
326 {
327         unsigned int pos, reg;
328
329         for (pos = 0; pos < howmany; pos++) {
330                 struct resource *res = &dev->resource[pos];
331                 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
332                 pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
333         }
334
335         if (rom) {
336                 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
337                 dev->rom_base_reg = rom;
338                 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
339                                 IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
340                                 IORESOURCE_SIZEALIGN;
341                 __pci_read_base(dev, pci_bar_mem32, res, rom);
342         }
343 }
344
345 void __devinit pci_read_bridge_bases(struct pci_bus *child)
346 {
347         struct pci_dev *dev = child->self;
348         u8 io_base_lo, io_limit_lo;
349         u16 mem_base_lo, mem_limit_lo;
350         unsigned long base, limit;
351         struct resource *res;
352         int i;
353
354         if (!dev)               /* It's a host bus, nothing to read */
355                 return;
356
357         if (dev->transparent) {
358                 dev_info(&dev->dev, "transparent bridge\n");
359                 for(i = 3; i < PCI_BUS_NUM_RESOURCES; i++)
360                         child->resource[i] = child->parent->resource[i - 3];
361         }
362
363         for(i=0; i<3; i++)
364                 child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
365
366         res = child->resource[0];
367         pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
368         pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
369         base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
370         limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
371
372         if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
373                 u16 io_base_hi, io_limit_hi;
374                 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
375                 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
376                 base |= (io_base_hi << 16);
377                 limit |= (io_limit_hi << 16);
378         }
379
380         if (base <= limit) {
381                 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
382                 if (!res->start)
383                         res->start = base;
384                 if (!res->end)
385                         res->end = limit + 0xfff;
386         }
387
388         res = child->resource[1];
389         pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
390         pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
391         base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
392         limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
393         if (base <= limit) {
394                 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
395                 res->start = base;
396                 res->end = limit + 0xfffff;
397         }
398
399         res = child->resource[2];
400         pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
401         pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
402         base = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
403         limit = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
404
405         if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
406                 u32 mem_base_hi, mem_limit_hi;
407                 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
408                 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
409
410                 /*
411                  * Some bridges set the base > limit by default, and some
412                  * (broken) BIOSes do not initialize them.  If we find
413                  * this, just assume they are not being used.
414                  */
415                 if (mem_base_hi <= mem_limit_hi) {
416 #if BITS_PER_LONG == 64
417                         base |= ((long) mem_base_hi) << 32;
418                         limit |= ((long) mem_limit_hi) << 32;
419 #else
420                         if (mem_base_hi || mem_limit_hi) {
421                                 dev_err(&dev->dev, "can't handle 64-bit "
422                                         "address space for bridge\n");
423                                 return;
424                         }
425 #endif
426                 }
427         }
428         if (base <= limit) {
429                 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM | IORESOURCE_PREFETCH;
430                 res->start = base;
431                 res->end = limit + 0xfffff;
432         }
433 }
434
435 static struct pci_bus * pci_alloc_bus(void)
436 {
437         struct pci_bus *b;
438
439         b = kzalloc(sizeof(*b), GFP_KERNEL);
440         if (b) {
441                 INIT_LIST_HEAD(&b->node);
442                 INIT_LIST_HEAD(&b->children);
443                 INIT_LIST_HEAD(&b->devices);
444                 INIT_LIST_HEAD(&b->slots);
445         }
446         return b;
447 }
448
449 static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
450                                            struct pci_dev *bridge, int busnr)
451 {
452         struct pci_bus *child;
453         int i;
454
455         /*
456          * Allocate a new bus, and inherit stuff from the parent..
457          */
458         child = pci_alloc_bus();
459         if (!child)
460                 return NULL;
461
462         child->self = bridge;
463         child->parent = parent;
464         child->ops = parent->ops;
465         child->sysdata = parent->sysdata;
466         child->bus_flags = parent->bus_flags;
467         child->bridge = get_device(&bridge->dev);
468
469         /* initialize some portions of the bus device, but don't register it
470          * now as the parent is not properly set up yet.  This device will get
471          * registered later in pci_bus_add_devices()
472          */
473         child->dev.class = &pcibus_class;
474         sprintf(child->dev.bus_id, "%04x:%02x", pci_domain_nr(child), busnr);
475
476         /*
477          * Set up the primary, secondary and subordinate
478          * bus numbers.
479          */
480         child->number = child->secondary = busnr;
481         child->primary = parent->secondary;
482         child->subordinate = 0xff;
483
484         /* Set up default resource pointers and names.. */
485         for (i = 0; i < 4; i++) {
486                 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
487                 child->resource[i]->name = child->name;
488         }
489         bridge->subordinate = child;
490
491         return child;
492 }
493
494 struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
495 {
496         struct pci_bus *child;
497
498         child = pci_alloc_child_bus(parent, dev, busnr);
499         if (child) {
500                 down_write(&pci_bus_sem);
501                 list_add_tail(&child->node, &parent->children);
502                 up_write(&pci_bus_sem);
503         }
504         return child;
505 }
506
507 static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
508 {
509         struct pci_bus *parent = child->parent;
510
511         /* Attempts to fix that up are really dangerous unless
512            we're going to re-assign all bus numbers. */
513         if (!pcibios_assign_all_busses())
514                 return;
515
516         while (parent->parent && parent->subordinate < max) {
517                 parent->subordinate = max;
518                 pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
519                 parent = parent->parent;
520         }
521 }
522
523 /*
524  * If it's a bridge, configure it and scan the bus behind it.
525  * For CardBus bridges, we don't scan behind as the devices will
526  * be handled by the bridge driver itself.
527  *
528  * We need to process bridges in two passes -- first we scan those
529  * already configured by the BIOS and after we are done with all of
530  * them, we proceed to assigning numbers to the remaining buses in
531  * order to avoid overlaps between old and new bus numbers.
532  */
533 int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
534 {
535         struct pci_bus *child;
536         int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
537         u32 buses, i, j = 0;
538         u16 bctl;
539
540         pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
541
542         dev_dbg(&dev->dev, "scanning behind bridge, config %06x, pass %d\n",
543                 buses & 0xffffff, pass);
544
545         /* Disable MasterAbortMode during probing to avoid reporting
546            of bus errors (in some architectures) */ 
547         pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
548         pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
549                               bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
550
551         if ((buses & 0xffff00) && !pcibios_assign_all_busses() && !is_cardbus) {
552                 unsigned int cmax, busnr;
553                 /*
554                  * Bus already configured by firmware, process it in the first
555                  * pass and just note the configuration.
556                  */
557                 if (pass)
558                         goto out;
559                 busnr = (buses >> 8) & 0xFF;
560
561                 /*
562                  * If we already got to this bus through a different bridge,
563                  * ignore it.  This can happen with the i450NX chipset.
564                  */
565                 if (pci_find_bus(pci_domain_nr(bus), busnr)) {
566                         dev_info(&dev->dev, "bus %04x:%02x already known\n",
567                                  pci_domain_nr(bus), busnr);
568                         goto out;
569                 }
570
571                 child = pci_add_new_bus(bus, dev, busnr);
572                 if (!child)
573                         goto out;
574                 child->primary = buses & 0xFF;
575                 child->subordinate = (buses >> 16) & 0xFF;
576                 child->bridge_ctl = bctl;
577
578                 cmax = pci_scan_child_bus(child);
579                 if (cmax > max)
580                         max = cmax;
581                 if (child->subordinate > max)
582                         max = child->subordinate;
583         } else {
584                 /*
585                  * We need to assign a number to this bus which we always
586                  * do in the second pass.
587                  */
588                 if (!pass) {
589                         if (pcibios_assign_all_busses())
590                                 /* Temporarily disable forwarding of the
591                                    configuration cycles on all bridges in
592                                    this bus segment to avoid possible
593                                    conflicts in the second pass between two
594                                    bridges programmed with overlapping
595                                    bus ranges. */
596                                 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
597                                                        buses & ~0xffffff);
598                         goto out;
599                 }
600
601                 /* Clear errors */
602                 pci_write_config_word(dev, PCI_STATUS, 0xffff);
603
604                 /* Prevent assigning a bus number that already exists.
605                  * This can happen when a bridge is hot-plugged */
606                 if (pci_find_bus(pci_domain_nr(bus), max+1))
607                         goto out;
608                 child = pci_add_new_bus(bus, dev, ++max);
609                 buses = (buses & 0xff000000)
610                       | ((unsigned int)(child->primary)     <<  0)
611                       | ((unsigned int)(child->secondary)   <<  8)
612                       | ((unsigned int)(child->subordinate) << 16);
613
614                 /*
615                  * yenta.c forces a secondary latency timer of 176.
616                  * Copy that behaviour here.
617                  */
618                 if (is_cardbus) {
619                         buses &= ~0xff000000;
620                         buses |= CARDBUS_LATENCY_TIMER << 24;
621                 }
622                         
623                 /*
624                  * We need to blast all three values with a single write.
625                  */
626                 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
627
628                 if (!is_cardbus) {
629                         child->bridge_ctl = bctl;
630                         /*
631                          * Adjust subordinate busnr in parent buses.
632                          * We do this before scanning for children because
633                          * some devices may not be detected if the bios
634                          * was lazy.
635                          */
636                         pci_fixup_parent_subordinate_busnr(child, max);
637                         /* Now we can scan all subordinate buses... */
638                         max = pci_scan_child_bus(child);
639                         /*
640                          * now fix it up again since we have found
641                          * the real value of max.
642                          */
643                         pci_fixup_parent_subordinate_busnr(child, max);
644                 } else {
645                         /*
646                          * For CardBus bridges, we leave 4 bus numbers
647                          * as cards with a PCI-to-PCI bridge can be
648                          * inserted later.
649                          */
650                         for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
651                                 struct pci_bus *parent = bus;
652                                 if (pci_find_bus(pci_domain_nr(bus),
653                                                         max+i+1))
654                                         break;
655                                 while (parent->parent) {
656                                         if ((!pcibios_assign_all_busses()) &&
657                                             (parent->subordinate > max) &&
658                                             (parent->subordinate <= max+i)) {
659                                                 j = 1;
660                                         }
661                                         parent = parent->parent;
662                                 }
663                                 if (j) {
664                                         /*
665                                          * Often, there are two cardbus bridges
666                                          * -- try to leave one valid bus number
667                                          * for each one.
668                                          */
669                                         i /= 2;
670                                         break;
671                                 }
672                         }
673                         max += i;
674                         pci_fixup_parent_subordinate_busnr(child, max);
675                 }
676                 /*
677                  * Set the subordinate bus number to its real value.
678                  */
679                 child->subordinate = max;
680                 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
681         }
682
683         sprintf(child->name,
684                 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
685                 pci_domain_nr(bus), child->number);
686
687         /* Has only triggered on CardBus, fixup is in yenta_socket */
688         while (bus->parent) {
689                 if ((child->subordinate > bus->subordinate) ||
690                     (child->number > bus->subordinate) ||
691                     (child->number < bus->number) ||
692                     (child->subordinate < bus->number)) {
693                         pr_debug("PCI: Bus #%02x (-#%02x) is %s "
694                                 "hidden behind%s bridge #%02x (-#%02x)\n",
695                                 child->number, child->subordinate,
696                                 (bus->number > child->subordinate &&
697                                  bus->subordinate < child->number) ?
698                                         "wholly" : "partially",
699                                 bus->self->transparent ? " transparent" : "",
700                                 bus->number, bus->subordinate);
701                 }
702                 bus = bus->parent;
703         }
704
705 out:
706         pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
707
708         return max;
709 }
710
711 /*
712  * Read interrupt line and base address registers.
713  * The architecture-dependent code can tweak these, of course.
714  */
715 static void pci_read_irq(struct pci_dev *dev)
716 {
717         unsigned char irq;
718
719         pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
720         dev->pin = irq;
721         if (irq)
722                 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
723         dev->irq = irq;
724 }
725
726 #define LEGACY_IO_RESOURCE      (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
727
728 /**
729  * pci_setup_device - fill in class and map information of a device
730  * @dev: the device structure to fill
731  *
732  * Initialize the device structure with information about the device's 
733  * vendor,class,memory and IO-space addresses,IRQ lines etc.
734  * Called at initialisation of the PCI subsystem and by CardBus services.
735  * Returns 0 on success and -1 if unknown type of device (not normal, bridge
736  * or CardBus).
737  */
738 static int pci_setup_device(struct pci_dev * dev)
739 {
740         u32 class;
741
742         dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
743                      dev->bus->number, PCI_SLOT(dev->devfn),
744                      PCI_FUNC(dev->devfn));
745
746         pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
747         dev->revision = class & 0xff;
748         class >>= 8;                                /* upper 3 bytes */
749         dev->class = class;
750         class >>= 8;
751
752         dev_dbg(&dev->dev, "found [%04x/%04x] class %06x header type %02x\n",
753                  dev->vendor, dev->device, class, dev->hdr_type);
754
755         /* "Unknown power state" */
756         dev->current_state = PCI_UNKNOWN;
757
758         /* Early fixups, before probing the BARs */
759         pci_fixup_device(pci_fixup_early, dev);
760         class = dev->class >> 8;
761
762         switch (dev->hdr_type) {                    /* header type */
763         case PCI_HEADER_TYPE_NORMAL:                /* standard header */
764                 if (class == PCI_CLASS_BRIDGE_PCI)
765                         goto bad;
766                 pci_read_irq(dev);
767                 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
768                 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
769                 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
770
771                 /*
772                  *      Do the ugly legacy mode stuff here rather than broken chip
773                  *      quirk code. Legacy mode ATA controllers have fixed
774                  *      addresses. These are not always echoed in BAR0-3, and
775                  *      BAR0-3 in a few cases contain junk!
776                  */
777                 if (class == PCI_CLASS_STORAGE_IDE) {
778                         u8 progif;
779                         pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
780                         if ((progif & 1) == 0) {
781                                 dev->resource[0].start = 0x1F0;
782                                 dev->resource[0].end = 0x1F7;
783                                 dev->resource[0].flags = LEGACY_IO_RESOURCE;
784                                 dev->resource[1].start = 0x3F6;
785                                 dev->resource[1].end = 0x3F6;
786                                 dev->resource[1].flags = LEGACY_IO_RESOURCE;
787                         }
788                         if ((progif & 4) == 0) {
789                                 dev->resource[2].start = 0x170;
790                                 dev->resource[2].end = 0x177;
791                                 dev->resource[2].flags = LEGACY_IO_RESOURCE;
792                                 dev->resource[3].start = 0x376;
793                                 dev->resource[3].end = 0x376;
794                                 dev->resource[3].flags = LEGACY_IO_RESOURCE;
795                         }
796                 }
797                 break;
798
799         case PCI_HEADER_TYPE_BRIDGE:                /* bridge header */
800                 if (class != PCI_CLASS_BRIDGE_PCI)
801                         goto bad;
802                 /* The PCI-to-PCI bridge spec requires that subtractive
803                    decoding (i.e. transparent) bridge must have programming
804                    interface code of 0x01. */ 
805                 pci_read_irq(dev);
806                 dev->transparent = ((dev->class & 0xff) == 1);
807                 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
808                 break;
809
810         case PCI_HEADER_TYPE_CARDBUS:               /* CardBus bridge header */
811                 if (class != PCI_CLASS_BRIDGE_CARDBUS)
812                         goto bad;
813                 pci_read_irq(dev);
814                 pci_read_bases(dev, 1, 0);
815                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
816                 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
817                 break;
818
819         default:                                    /* unknown header */
820                 dev_err(&dev->dev, "unknown header type %02x, "
821                         "ignoring device\n", dev->hdr_type);
822                 return -1;
823
824         bad:
825                 dev_err(&dev->dev, "ignoring class %02x (doesn't match header "
826                         "type %02x)\n", class, dev->hdr_type);
827                 dev->class = PCI_CLASS_NOT_DEFINED;
828         }
829
830         /* We found a fine healthy device, go go go... */
831         return 0;
832 }
833
834 /**
835  * pci_release_dev - free a pci device structure when all users of it are finished.
836  * @dev: device that's been disconnected
837  *
838  * Will be called only by the device core when all users of this pci device are
839  * done.
840  */
841 static void pci_release_dev(struct device *dev)
842 {
843         struct pci_dev *pci_dev;
844
845         pci_dev = to_pci_dev(dev);
846         pci_vpd_release(pci_dev);
847         kfree(pci_dev);
848 }
849
850 static void set_pcie_port_type(struct pci_dev *pdev)
851 {
852         int pos;
853         u16 reg16;
854
855         pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
856         if (!pos)
857                 return;
858         pdev->is_pcie = 1;
859         pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
860         pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
861 }
862
863 /**
864  * pci_cfg_space_size - get the configuration space size of the PCI device.
865  * @dev: PCI device
866  *
867  * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
868  * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
869  * access it.  Maybe we don't have a way to generate extended config space
870  * accesses, or the device is behind a reverse Express bridge.  So we try
871  * reading the dword at 0x100 which must either be 0 or a valid extended
872  * capability header.
873  */
874 int pci_cfg_space_size_ext(struct pci_dev *dev)
875 {
876         u32 status;
877
878         if (pci_read_config_dword(dev, 256, &status) != PCIBIOS_SUCCESSFUL)
879                 goto fail;
880         if (status == 0xffffffff)
881                 goto fail;
882
883         return PCI_CFG_SPACE_EXP_SIZE;
884
885  fail:
886         return PCI_CFG_SPACE_SIZE;
887 }
888
889 int pci_cfg_space_size(struct pci_dev *dev)
890 {
891         int pos;
892         u32 status;
893
894         pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
895         if (!pos) {
896                 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
897                 if (!pos)
898                         goto fail;
899
900                 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
901                 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
902                         goto fail;
903         }
904
905         return pci_cfg_space_size_ext(dev);
906
907  fail:
908         return PCI_CFG_SPACE_SIZE;
909 }
910
911 static void pci_release_bus_bridge_dev(struct device *dev)
912 {
913         kfree(dev);
914 }
915
916 struct pci_dev *alloc_pci_dev(void)
917 {
918         struct pci_dev *dev;
919
920         dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
921         if (!dev)
922                 return NULL;
923
924         INIT_LIST_HEAD(&dev->bus_list);
925
926         pci_msi_init_pci_dev(dev);
927
928         return dev;
929 }
930 EXPORT_SYMBOL(alloc_pci_dev);
931
932 /*
933  * Read the config data for a PCI device, sanity-check it
934  * and fill in the dev structure...
935  */
936 static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
937 {
938         struct pci_dev *dev;
939         u32 l;
940         u8 hdr_type;
941         int delay = 1;
942
943         if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
944                 return NULL;
945
946         /* some broken boards return 0 or ~0 if a slot is empty: */
947         if (l == 0xffffffff || l == 0x00000000 ||
948             l == 0x0000ffff || l == 0xffff0000)
949                 return NULL;
950
951         /* Configuration request Retry Status */
952         while (l == 0xffff0001) {
953                 msleep(delay);
954                 delay *= 2;
955                 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
956                         return NULL;
957                 /* Card hasn't responded in 60 seconds?  Must be stuck. */
958                 if (delay > 60 * 1000) {
959                         printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
960                                         "responding\n", pci_domain_nr(bus),
961                                         bus->number, PCI_SLOT(devfn),
962                                         PCI_FUNC(devfn));
963                         return NULL;
964                 }
965         }
966
967         if (pci_bus_read_config_byte(bus, devfn, PCI_HEADER_TYPE, &hdr_type))
968                 return NULL;
969
970         dev = alloc_pci_dev();
971         if (!dev)
972                 return NULL;
973
974         dev->bus = bus;
975         dev->sysdata = bus->sysdata;
976         dev->dev.parent = bus->bridge;
977         dev->dev.bus = &pci_bus_type;
978         dev->devfn = devfn;
979         dev->hdr_type = hdr_type & 0x7f;
980         dev->multifunction = !!(hdr_type & 0x80);
981         dev->vendor = l & 0xffff;
982         dev->device = (l >> 16) & 0xffff;
983         dev->cfg_size = pci_cfg_space_size(dev);
984         dev->error_state = pci_channel_io_normal;
985         set_pcie_port_type(dev);
986
987         /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
988            set this higher, assuming the system even supports it.  */
989         dev->dma_mask = 0xffffffff;
990         if (pci_setup_device(dev) < 0) {
991                 kfree(dev);
992                 return NULL;
993         }
994
995         pci_vpd_pci22_init(dev);
996
997         return dev;
998 }
999
1000 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1001 {
1002         device_initialize(&dev->dev);
1003         dev->dev.release = pci_release_dev;
1004         pci_dev_get(dev);
1005
1006         dev->dev.dma_mask = &dev->dma_mask;
1007         dev->dev.dma_parms = &dev->dma_parms;
1008         dev->dev.coherent_dma_mask = 0xffffffffull;
1009
1010         pci_set_dma_max_seg_size(dev, 65536);
1011         pci_set_dma_seg_boundary(dev, 0xffffffff);
1012
1013         /* Fix up broken headers */
1014         pci_fixup_device(pci_fixup_header, dev);
1015
1016         /* Initialize power management of the device */
1017         pci_pm_init(dev);
1018
1019         /*
1020          * Add the device to our list of discovered devices
1021          * and the bus list for fixup functions, etc.
1022          */
1023         down_write(&pci_bus_sem);
1024         list_add_tail(&dev->bus_list, &bus->devices);
1025         up_write(&pci_bus_sem);
1026 }
1027
1028 struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
1029 {
1030         struct pci_dev *dev;
1031
1032         dev = pci_scan_device(bus, devfn);
1033         if (!dev)
1034                 return NULL;
1035
1036         pci_device_add(dev, bus);
1037
1038         return dev;
1039 }
1040 EXPORT_SYMBOL(pci_scan_single_device);
1041
1042 /**
1043  * pci_scan_slot - scan a PCI slot on a bus for devices.
1044  * @bus: PCI bus to scan
1045  * @devfn: slot number to scan (must have zero function.)
1046  *
1047  * Scan a PCI slot on the specified PCI bus for devices, adding
1048  * discovered devices to the @bus->devices list.  New devices
1049  * will not have is_added set.
1050  */
1051 int pci_scan_slot(struct pci_bus *bus, int devfn)
1052 {
1053         int func, nr = 0;
1054         int scan_all_fns;
1055
1056         scan_all_fns = pcibios_scan_all_fns(bus, devfn);
1057
1058         for (func = 0; func < 8; func++, devfn++) {
1059                 struct pci_dev *dev;
1060
1061                 dev = pci_scan_single_device(bus, devfn);
1062                 if (dev) {
1063                         nr++;
1064
1065                         /*
1066                          * If this is a single function device,
1067                          * don't scan past the first function.
1068                          */
1069                         if (!dev->multifunction) {
1070                                 if (func > 0) {
1071                                         dev->multifunction = 1;
1072                                 } else {
1073                                         break;
1074                                 }
1075                         }
1076                 } else {
1077                         if (func == 0 && !scan_all_fns)
1078                                 break;
1079                 }
1080         }
1081
1082         /* only one slot has pcie device */
1083         if (bus->self && nr)
1084                 pcie_aspm_init_link_state(bus->self);
1085
1086         return nr;
1087 }
1088
1089 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1090 {
1091         unsigned int devfn, pass, max = bus->secondary;
1092         struct pci_dev *dev;
1093
1094         pr_debug("PCI: Scanning bus %04x:%02x\n", pci_domain_nr(bus), bus->number);
1095
1096         /* Go find them, Rover! */
1097         for (devfn = 0; devfn < 0x100; devfn += 8)
1098                 pci_scan_slot(bus, devfn);
1099
1100         /*
1101          * After performing arch-dependent fixup of the bus, look behind
1102          * all PCI-to-PCI bridges on this bus.
1103          */
1104         pr_debug("PCI: Fixups for bus %04x:%02x\n", pci_domain_nr(bus), bus->number);
1105         pcibios_fixup_bus(bus);
1106         for (pass=0; pass < 2; pass++)
1107                 list_for_each_entry(dev, &bus->devices, bus_list) {
1108                         if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1109                             dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1110                                 max = pci_scan_bridge(bus, dev, max, pass);
1111                 }
1112
1113         /*
1114          * We've scanned the bus and so we know all about what's on
1115          * the other side of any bridges that may be on this bus plus
1116          * any devices.
1117          *
1118          * Return how far we've got finding sub-buses.
1119          */
1120         pr_debug("PCI: Bus scan for %04x:%02x returning with max=%02x\n",
1121                 pci_domain_nr(bus), bus->number, max);
1122         return max;
1123 }
1124
1125 void __attribute__((weak)) set_pci_bus_resources_arch_default(struct pci_bus *b)
1126 {
1127 }
1128
1129 struct pci_bus * pci_create_bus(struct device *parent,
1130                 int bus, struct pci_ops *ops, void *sysdata)
1131 {
1132         int error;
1133         struct pci_bus *b;
1134         struct device *dev;
1135
1136         b = pci_alloc_bus();
1137         if (!b)
1138                 return NULL;
1139
1140         dev = kmalloc(sizeof(*dev), GFP_KERNEL);
1141         if (!dev){
1142                 kfree(b);
1143                 return NULL;
1144         }
1145
1146         b->sysdata = sysdata;
1147         b->ops = ops;
1148
1149         if (pci_find_bus(pci_domain_nr(b), bus)) {
1150                 /* If we already got to this bus through a different bridge, ignore it */
1151                 pr_debug("PCI: Bus %04x:%02x already known\n", pci_domain_nr(b), bus);
1152                 goto err_out;
1153         }
1154
1155         down_write(&pci_bus_sem);
1156         list_add_tail(&b->node, &pci_root_buses);
1157         up_write(&pci_bus_sem);
1158
1159         memset(dev, 0, sizeof(*dev));
1160         dev->parent = parent;
1161         dev->release = pci_release_bus_bridge_dev;
1162         sprintf(dev->bus_id, "pci%04x:%02x", pci_domain_nr(b), bus);
1163         error = device_register(dev);
1164         if (error)
1165                 goto dev_reg_err;
1166         b->bridge = get_device(dev);
1167
1168         if (!parent)
1169                 set_dev_node(b->bridge, pcibus_to_node(b));
1170
1171         b->dev.class = &pcibus_class;
1172         b->dev.parent = b->bridge;
1173         sprintf(b->dev.bus_id, "%04x:%02x", pci_domain_nr(b), bus);
1174         error = device_register(&b->dev);
1175         if (error)
1176                 goto class_dev_reg_err;
1177         error = device_create_file(&b->dev, &dev_attr_cpuaffinity);
1178         if (error)
1179                 goto dev_create_file_err;
1180
1181         /* Create legacy_io and legacy_mem files for this bus */
1182         pci_create_legacy_files(b);
1183
1184         b->number = b->secondary = bus;
1185         b->resource[0] = &ioport_resource;
1186         b->resource[1] = &iomem_resource;
1187
1188         set_pci_bus_resources_arch_default(b);
1189
1190         return b;
1191
1192 dev_create_file_err:
1193         device_unregister(&b->dev);
1194 class_dev_reg_err:
1195         device_unregister(dev);
1196 dev_reg_err:
1197         down_write(&pci_bus_sem);
1198         list_del(&b->node);
1199         up_write(&pci_bus_sem);
1200 err_out:
1201         kfree(dev);
1202         kfree(b);
1203         return NULL;
1204 }
1205
1206 struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
1207                 int bus, struct pci_ops *ops, void *sysdata)
1208 {
1209         struct pci_bus *b;
1210
1211         b = pci_create_bus(parent, bus, ops, sysdata);
1212         if (b)
1213                 b->subordinate = pci_scan_child_bus(b);
1214         return b;
1215 }
1216 EXPORT_SYMBOL(pci_scan_bus_parented);
1217
1218 #ifdef CONFIG_HOTPLUG
1219 EXPORT_SYMBOL(pci_add_new_bus);
1220 EXPORT_SYMBOL(pci_scan_slot);
1221 EXPORT_SYMBOL(pci_scan_bridge);
1222 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1223 #endif
1224
1225 static int __init pci_sort_bf_cmp(const struct pci_dev *a, const struct pci_dev *b)
1226 {
1227         if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
1228         else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
1229
1230         if      (a->bus->number < b->bus->number) return -1;
1231         else if (a->bus->number > b->bus->number) return  1;
1232
1233         if      (a->devfn < b->devfn) return -1;
1234         else if (a->devfn > b->devfn) return  1;
1235
1236         return 0;
1237 }
1238
1239 /*
1240  * Yes, this forcably breaks the klist abstraction temporarily.  It
1241  * just wants to sort the klist, not change reference counts and
1242  * take/drop locks rapidly in the process.  It does all this while
1243  * holding the lock for the list, so objects can't otherwise be
1244  * added/removed while we're swizzling.
1245  */
1246 static void __init pci_insertion_sort_klist(struct pci_dev *a, struct list_head *list)
1247 {
1248         struct list_head *pos;
1249         struct klist_node *n;
1250         struct device *dev;
1251         struct pci_dev *b;
1252
1253         list_for_each(pos, list) {
1254                 n = container_of(pos, struct klist_node, n_node);
1255                 dev = container_of(n, struct device, knode_bus);
1256                 b = to_pci_dev(dev);
1257                 if (pci_sort_bf_cmp(a, b) <= 0) {
1258                         list_move_tail(&a->dev.knode_bus.n_node, &b->dev.knode_bus.n_node);
1259                         return;
1260                 }
1261         }
1262         list_move_tail(&a->dev.knode_bus.n_node, list);
1263 }
1264
1265 void __init pci_sort_breadthfirst(void)
1266 {
1267         LIST_HEAD(sorted_devices);
1268         struct list_head *pos, *tmp;
1269         struct klist_node *n;
1270         struct device *dev;
1271         struct pci_dev *pdev;
1272         struct klist *device_klist;
1273
1274         device_klist = bus_get_device_klist(&pci_bus_type);
1275
1276         spin_lock(&device_klist->k_lock);
1277         list_for_each_safe(pos, tmp, &device_klist->k_list) {
1278                 n = container_of(pos, struct klist_node, n_node);
1279                 dev = container_of(n, struct device, knode_bus);
1280                 pdev = to_pci_dev(dev);
1281                 pci_insertion_sort_klist(pdev, &sorted_devices);
1282         }
1283         list_splice(&sorted_devices, &device_klist->k_list);
1284         spin_unlock(&device_klist->k_lock);
1285 }