aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/pci/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/pci/common.c')
-rw-r--r--arch/x86/pci/common.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 6e64aaf00d1d..3a5261bdff5d 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -121,6 +121,21 @@ void __init dmi_check_skip_isa_align(void)
121 dmi_check_system(can_skip_pciprobe_dmi_table); 121 dmi_check_system(can_skip_pciprobe_dmi_table);
122} 122}
123 123
124static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev)
125{
126 struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE];
127
128 if (pci_probe & PCI_NOASSIGN_ROMS) {
129 if (rom_r->parent)
130 return;
131 if (rom_r->start) {
132 /* we deal with BIOS assigned ROM later */
133 return;
134 }
135 rom_r->start = rom_r->end = rom_r->flags = 0;
136 }
137}
138
124/* 139/*
125 * Called after each bus is probed, but before its children 140 * Called after each bus is probed, but before its children
126 * are examined. 141 * are examined.
@@ -128,7 +143,11 @@ void __init dmi_check_skip_isa_align(void)
128 143
129void __devinit pcibios_fixup_bus(struct pci_bus *b) 144void __devinit pcibios_fixup_bus(struct pci_bus *b)
130{ 145{
146 struct pci_dev *dev;
147
131 pci_read_bridge_bases(b); 148 pci_read_bridge_bases(b);
149 list_for_each_entry(dev, &b->devices, bus_list)
150 pcibios_fixup_device_resources(dev);
132} 151}
133 152
134/* 153/*
@@ -483,6 +502,9 @@ char * __devinit pcibios_setup(char *str)
483 else if (!strcmp(str, "rom")) { 502 else if (!strcmp(str, "rom")) {
484 pci_probe |= PCI_ASSIGN_ROMS; 503 pci_probe |= PCI_ASSIGN_ROMS;
485 return NULL; 504 return NULL;
505 } else if (!strcmp(str, "norom")) {
506 pci_probe |= PCI_NOASSIGN_ROMS;
507 return NULL;
486 } else if (!strcmp(str, "assign-busses")) { 508 } else if (!strcmp(str, "assign-busses")) {
487 pci_probe |= PCI_ASSIGN_ALL_BUSSES; 509 pci_probe |= PCI_ASSIGN_ALL_BUSSES;
488 return NULL; 510 return NULL;