@@ -168,6 +168,7 @@ static const char __init *pci_mmcfg_intel_945(void)
return "Intel Corporation 945G/GZ/P/PL Express Memory Controller Hub";
}
+static int __initdata amd_fam10h_mmconf_found_via_hostbridge;
static const char __init *pci_mmcfg_amd_fam10h(void)
{
u32 low, high, address;
@@ -215,6 +216,8 @@ static const char __init *pci_mmcfg_amd_fam10h(void)
return NULL;
}
+ amd_fam10h_mmconf_found_via_hostbridge = 1;
+
return "AMD Family 10h NB";
}
@@ -606,7 +609,12 @@ static void __init __pci_mmcfg_init(int early)
if (!known_bridge)
acpi_sfi_table_parse(ACPI_SIG_MCFG, pci_parse_mcfg);
- pci_mmcfg_reject_broken(early);
+ /*
+ * if it is amd fam10h, and that is read from msr,
+ * we don't need check them again.
+ */
+ if (!amd_fam10h_mmconf_found_via_hostbridge)
+ pci_mmcfg_reject_broken(early);
if (list_empty(&pci_mmcfg_list))
return;