summaryrefslogtreecommitdiff
path: root/arch/i386/pci/mmconfig.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-03-24 01:35:12 +0300
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-24 01:35:12 +0300
commit92c05fc1a32e5ccef5e0e8201f32dcdab041524c (patch)
tree71c0202dffee676d3b2e0b75ea4472aaa2ffe8df /arch/i386/pci/mmconfig.c
parente4e73041ecc4a3559c42ed9489f58531c2a8646b (diff)
downloadlinux-92c05fc1a32e5ccef5e0e8201f32dcdab041524c.tar.xz
[PATCH] PCI: Give PCI config access initialization a defined ordering
I moved it to a separate function which is safer. This avoids problems with the linker reordering them and the less useful PCI config space access methods taking priority over the better ones. Fixes some problems with broken MMCONFIG Cc: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/i386/pci/mmconfig.c')
-rw-r--r--arch/i386/pci/mmconfig.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c
index 0ee8a983708c..613789071f30 100644
--- a/arch/i386/pci/mmconfig.c
+++ b/arch/i386/pci/mmconfig.c
@@ -172,25 +172,20 @@ static __init void unreachable_devices(void)
}
}
-static int __init pci_mmcfg_init(void)
+void __init pci_mmcfg_init(void)
{
if ((pci_probe & PCI_PROBE_MMCONF) == 0)
- goto out;
+ return;
acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg);
if ((pci_mmcfg_config_num == 0) ||
(pci_mmcfg_config == NULL) ||
(pci_mmcfg_config[0].base_address == 0))
- goto out;
+ return;
printk(KERN_INFO "PCI: Using MMCONFIG\n");
raw_pci_ops = &pci_mmcfg;
pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF;
unreachable_devices();
-
- out:
- return 0;
}
-
-arch_initcall(pci_mmcfg_init);