};
 
 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
        if (!found)
                return 0;
 
+       /*
+        * We should learn topology and routing information from _PXM and
+        * _CRS methods in the ACPI namespace.  We extract node numbers
+        * here to work around BIOSes that don't supply _PXM.
+        */
        for (i = 0; i < 4; i++) {
                int min_bus;
                int max_bus;
                info = alloc_pci_root_info(min_bus, max_bus, node, link);
        }
 
+       /*
+        * The following code extracts routing information for use on old
+        * systems where Linux doesn't automatically use host bridge _CRS
+        * methods (or when the user specifies "pci=nocrs").
+        *
+        * We only do this through Fam11h, because _CRS should be enough on
+        * newer systems.
+        */
+       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;