[PATCH] i386/x86-64: Only do MCFG e820 check when type 1 works
authorAndi Kleen <ak@suse.de>
Tue, 26 Sep 2006 08:52:40 +0000 (10:52 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Tue, 26 Sep 2006 08:52:40 +0000 (10:52 +0200)
Needs earlier patch to split type 1 probing from use.

This patch should fix the x86 macs where type 1 PCI config space access
doesn't work, but MCFG does. They also don't have a usable e820 table
so the e820 sanity check failed.

Instead assume now that if type 1 doesn't work then MCFG must work
and don't do the e820 check.

Signed-off-by: Andi Kleen <ak@suse.de>
arch/i386/pci/mmconfig.c
arch/x86_64/pci/mmconfig.c

index 44155c5..2c4f585 100644 (file)
@@ -198,7 +198,9 @@ void __init pci_mmcfg_init(int type)
            (pci_mmcfg_config[0].base_address == 0))
                return;
 
-       if (!e820_all_mapped(pci_mmcfg_config[0].base_address,
+       /* Only do this check when type 1 works. If it doesn't work
+          assume we run on a Mac and always use MCFG */
+       if (type == 1 && !e820_all_mapped(pci_mmcfg_config[0].base_address,
                        pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN,
                        E820_RESERVED)) {
                printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n",
index d6b90d0..8bea510 100644 (file)
@@ -176,7 +176,9 @@ void __init pci_mmcfg_init(int type)
            (pci_mmcfg_config[0].base_address == 0))
                return;
 
-       if (!e820_all_mapped(pci_mmcfg_config[0].base_address,
+       /* Only do this check when type 1 works. If it doesn't work
+           assume we run on a Mac and always use MCFG */
+       if (type == 1 && !e820_all_mapped(pci_mmcfg_config[0].base_address,
                        pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN,
                        E820_RESERVED)) {
                printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n",