@@ -24,10 +24,11 @@ struct pci_hostbridge_probe {
};
static struct pci_hostbridge_probe pci_probes[] __initdata = {
- { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1100 },
- { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1200 },
- { 0xff, 0, PCI_VENDOR_ID_AMD, 0x1200 },
- { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1300 },
+ { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1100 }, /* K8 */
+ { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1200 }, /* Fam10h */
+ { 0xff, 0, PCI_VENDOR_ID_AMD, 0x1200 }, /* Fam10h */
+ { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1300 }, /* Fam11h */
+ { 0, 0x18, PCI_VENDOR_ID_AMD, 0x1600 }, /* Fam15h */
};
#define RANGE_NUM 16
@@ -113,6 +114,13 @@ static int __init early_fill_mp_bus_info(void)
info = alloc_pci_root_info(min_bus, max_bus, node, link);
}
+ /*
+ * The following code is only supported until Fam11h.
+ * Newer processors will depend on ACPI MCFG table instead.
+ */
+ if (boot_cpu_data.x86 > 0x11)
+ return 0;
+
/* get the default node and link for left over res */
reg = read_pci_config(bus, slot, 0, 0x60);
def_node = (reg >> 8) & 0x07;