diff options
Diffstat (limited to 'arch/x86/kernel/setup_64.c')
-rw-r--r-- | arch/x86/kernel/setup_64.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 185d3cc9129b..5e269a5dde2e 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c | |||
@@ -751,14 +751,21 @@ static void __cpuinit fam10h_check_enable_mmcfg(struct cpuinfo_x86 *c) | |||
751 | 751 | ||
752 | /* try to make sure that AP's setting is identical to BSP setting */ | 752 | /* try to make sure that AP's setting is identical to BSP setting */ |
753 | if (val & FAM10H_MMIO_CONF_ENABLE) { | 753 | if (val & FAM10H_MMIO_CONF_ENABLE) { |
754 | u64 base; | 754 | unsigned busnbits; |
755 | base = val & (0xffffULL << 32); | 755 | busnbits = (val >> FAM10H_MMIO_CONF_BUSRANGE_SHIFT) & |
756 | if (fam10h_pci_mmconf_base_status <= 0) { | 756 | FAM10H_MMIO_CONF_BUSRANGE_MASK; |
757 | fam10h_pci_mmconf_base = base; | 757 | |
758 | fam10h_pci_mmconf_base_status = 1; | 758 | /* only trust the one handle 256 buses, if acpi=off */ |
759 | return; | 759 | if (!acpi_pci_disabled || busnbits >= 8) { |
760 | } else if (fam10h_pci_mmconf_base == base) | 760 | u64 base; |
761 | return; | 761 | base = val & (0xffffULL << 32); |
762 | if (fam10h_pci_mmconf_base_status <= 0) { | ||
763 | fam10h_pci_mmconf_base = base; | ||
764 | fam10h_pci_mmconf_base_status = 1; | ||
765 | return; | ||
766 | } else if (fam10h_pci_mmconf_base == base) | ||
767 | return; | ||
768 | } | ||
762 | } | 769 | } |
763 | 770 | ||
764 | /* | 771 | /* |