diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-11 21:50:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-11 21:50:26 -0500 |
commit | 7b67e751479d50b7f84d1a3cc5216eed5e534b66 (patch) | |
tree | a1a6746857cf65f04dde739fe271bf4143d55eaf /arch/alpha | |
parent | 9f13a1fd452f11c18004ba2422a6384b424ec8a9 (diff) | |
parent | 76ccc297018d25d55b789bbd508861ef1e2cdb0c (diff) |
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci
* 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci: (80 commits)
x86/PCI: Expand the x86_msi_ops to have a restore MSIs.
PCI: Increase resource array mask bit size in pcim_iomap_regions()
PCI: DEVICE_COUNT_RESOURCE should be equal to PCI_NUM_RESOURCES
PCI: pci_ids: add device ids for STA2X11 device (aka ConneXT)
PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that breaks USB
x86/PCI: amd: factor out MMCONFIG discovery
PCI: Enable ATS at the device state restore
PCI: msi: fix imbalanced refcount of msi irq sysfs objects
PCI: kconfig: English typo in pci/pcie/Kconfig
PCI/PM/Runtime: make PCI traces quieter
PCI: remove pci_create_bus()
xtensa/PCI: convert to pci_scan_root_bus() for correct root bus resources
x86/PCI: convert to pci_create_root_bus() and pci_scan_root_bus()
x86/PCI: use pci_scan_bus() instead of pci_scan_bus_parented()
x86/PCI: read Broadcom CNB20LE host bridge info before PCI scan
sparc32, leon/PCI: convert to pci_scan_root_bus() for correct root bus resources
sparc/PCI: convert to pci_create_root_bus()
sh/PCI: convert to pci_scan_root_bus() for correct root bus resources
powerpc/PCI: convert to pci_create_root_bus()
powerpc/PCI: split PHB part out of pcibios_map_io_space()
...
Fix up conflicts in drivers/pci/msi.c and include/linux/pci_regs.h due
to the same patches being applied in other branches.
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/kernel/pci.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index f3cae275d3f5..8c723c1b086a 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c | |||
@@ -281,27 +281,9 @@ pcibios_fixup_device_resources(struct pci_dev *dev, struct pci_bus *bus) | |||
281 | void __devinit | 281 | void __devinit |
282 | pcibios_fixup_bus(struct pci_bus *bus) | 282 | pcibios_fixup_bus(struct pci_bus *bus) |
283 | { | 283 | { |
284 | /* Propagate hose info into the subordinate devices. */ | ||
285 | |||
286 | struct pci_controller *hose = bus->sysdata; | ||
287 | struct pci_dev *dev = bus->self; | 284 | struct pci_dev *dev = bus->self; |
288 | 285 | ||
289 | if (!dev) { | 286 | if (pci_probe_only && dev && |
290 | /* Root bus. */ | ||
291 | u32 pci_mem_end; | ||
292 | u32 sg_base = hose->sg_pci ? hose->sg_pci->dma_base : ~0; | ||
293 | unsigned long end; | ||
294 | |||
295 | bus->resource[0] = hose->io_space; | ||
296 | bus->resource[1] = hose->mem_space; | ||
297 | |||
298 | /* Adjust hose mem_space limit to prevent PCI allocations | ||
299 | in the iommu windows. */ | ||
300 | pci_mem_end = min((u32)__direct_map_base, sg_base) - 1; | ||
301 | end = hose->mem_space->start + pci_mem_end; | ||
302 | if (hose->mem_space->end > end) | ||
303 | hose->mem_space->end = end; | ||
304 | } else if (pci_probe_only && | ||
305 | (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) { | 287 | (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) { |
306 | pci_read_bridge_bases(bus); | 288 | pci_read_bridge_bases(bus); |
307 | pcibios_fixup_device_resources(dev, bus); | 289 | pcibios_fixup_device_resources(dev, bus); |
@@ -414,13 +396,31 @@ void __init | |||
414 | common_init_pci(void) | 396 | common_init_pci(void) |
415 | { | 397 | { |
416 | struct pci_controller *hose; | 398 | struct pci_controller *hose; |
399 | struct list_head resources; | ||
417 | struct pci_bus *bus; | 400 | struct pci_bus *bus; |
418 | int next_busno; | 401 | int next_busno; |
419 | int need_domain_info = 0; | 402 | int need_domain_info = 0; |
403 | u32 pci_mem_end; | ||
404 | u32 sg_base; | ||
405 | unsigned long end; | ||
420 | 406 | ||
421 | /* Scan all of the recorded PCI controllers. */ | 407 | /* Scan all of the recorded PCI controllers. */ |
422 | for (next_busno = 0, hose = hose_head; hose; hose = hose->next) { | 408 | for (next_busno = 0, hose = hose_head; hose; hose = hose->next) { |
423 | bus = pci_scan_bus(next_busno, alpha_mv.pci_ops, hose); | 409 | sg_base = hose->sg_pci ? hose->sg_pci->dma_base : ~0; |
410 | |||
411 | /* Adjust hose mem_space limit to prevent PCI allocations | ||
412 | in the iommu windows. */ | ||
413 | pci_mem_end = min((u32)__direct_map_base, sg_base) - 1; | ||
414 | end = hose->mem_space->start + pci_mem_end; | ||
415 | if (hose->mem_space->end > end) | ||
416 | hose->mem_space->end = end; | ||
417 | |||
418 | INIT_LIST_HEAD(&resources); | ||
419 | pci_add_resource(&resources, hose->io_space); | ||
420 | pci_add_resource(&resources, hose->mem_space); | ||
421 | |||
422 | bus = pci_scan_root_bus(NULL, next_busno, alpha_mv.pci_ops, | ||
423 | hose, &resources); | ||
424 | hose->bus = bus; | 424 | hose->bus = bus; |
425 | hose->need_domain_info = need_domain_info; | 425 | hose->need_domain_info = need_domain_info; |
426 | next_busno = bus->subordinate + 1; | 426 | next_busno = bus->subordinate + 1; |