Index: src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c
===================================================================
--- src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c	(revision 4887)
+++ src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c	(working copy)
@@ -50,6 +50,7 @@
 #include "southbridge/amd/amd8111/amd8111_early_smbus.c"
 #include "northbridge/amd/amdk8/raminit.h"
 #include "cpu/amd/model_fxx/apic_timer.c"
+#include "northbridge/amd/amdk8/util.c"
 #endif
 
 
@@ -393,6 +394,7 @@
 	dump_pci_device_index_wait(PCI_DEV(0, 0x19, 2), 0x98);
 #endif
 
+	showallroutes(BIOS_DEBUG, PCI_DEV(0, 0x18, 1));
         post_cache_as_ram(); // bsp swtich stack to ram and copy sysinfo ram now
 
 }
Index: src/mainboard/arima/hdama/Kconfig
===================================================================
--- src/mainboard/arima/hdama/Kconfig	(revision 4887)
+++ src/mainboard/arima/hdama/Kconfig	(working copy)
@@ -73,7 +73,7 @@
 
 config SB_HT_CHAIN_ON_BUS0
 	int
-	default 0
+	default 1
 	depends on BOARD_ARIMA_HDAMA
 
 config HT_CHAIN_END_UNITID_BASE
Index: src/mainboard/arima/hdama/mptable.c
===================================================================
--- src/mainboard/arima/hdama/mptable.c	(revision 4887)
+++ src/mainboard/arima/hdama/mptable.c	(working copy)
@@ -65,7 +65,7 @@
 
 	dev = dev_find_slot(0, PCI_DEVFN(0x18, 1));
 	if (!dev) {
-		return 0;
+		return 0xff;
 	}
 	for(reg = 0xE0; reg < 0xF0; reg += 0x04) {
 		uint32_t config_map;
@@ -89,7 +89,7 @@
 			return bus_base;
 		}
 	}
-	return 0;
+	return 0xff;
 }
 
 unsigned max_apicid(void)
@@ -152,9 +152,9 @@
 
 		/* HT chain 0 */
 		bus_chain_0 = node_link_to_bus(0, 0);
-		if (bus_chain_0 == 0) {
+		if (bus_chain_0 == 0xff) {
 			printk_debug("ERROR - cound not find bus for node 0 chain 0, using defaults\n");
-			bus_chain_0 = 1;
+			bus_chain_0 = 0;
 		}
 
 		/* 8111 */
@@ -165,7 +165,7 @@
 			bus_isa++;
 		}
 		else {
-			printk_debug("ERROR - could not find PCI 1:03.0, using defaults\n");
+			printk_debug("ERROR - could not find PCI %02x:03.0, using defaults\n", bus_chain_0);
 
 			bus_8111_1 = 4;
 			bus_isa = 5;
@@ -177,7 +177,7 @@
 
 		}
 		else {
-			printk_debug("ERROR - could not find PCI 1:01.0, using defaults\n");
+			printk_debug("ERROR - could not find PCI %02x:01.0, using defaults\n", bus_chain_0);
 
 			bus_8131_1 = 2;
 		}
@@ -188,7 +188,7 @@
 
 		}
 		else {
-			printk_debug("ERROR - could not find PCI 1:02.0, using defaults\n");
+			printk_debug("ERROR - could not find PCI %02x:02.0, using defaults\n", bus_chain_0);
 
 			bus_8131_2 = 3;
 		}
@@ -327,16 +327,21 @@
 	int reset;
 	int i;
 
+	unsigned char bus_chain_0 = node_link_to_bus(0, 0);
 	reset = 0;
 	printk_debug("Looking for bad PCIX MHz input\n");
-	dev = dev_find_slot(1, PCI_DEVFN(0x02,0));
+	dev = dev_find_slot(bus_chain_0, PCI_DEVFN(0x02,0));
+	if (!dev)
+		printk_debug("Couldn't find %02x:02.0 \n", bus_chain_0);
 	data = pci_read_config32(dev, 0xa0);
 	if(!(((data>>16)&0x03)==0x03)) {
 		reset=1;
 		printk_debug("Bad PCIX MHz - Reset\n");
 	}
 	printk_debug("Looking for bad Hot Swap Enable\n");
-	dev = dev_find_slot(1, PCI_DEVFN(0x01,0));
+	dev = dev_find_slot(bus_chain_0, PCI_DEVFN(0x01,0));
+	if (!dev)
+		printk_debug("Couldn't find %02x:01.0 \n", bus_chain_0);
 	data = pci_read_config32(dev, 0x48);
 	if(data & 0x0c) {
 		reset=1;
Index: src/mainboard/arima/hdama/cache_as_ram_auto.c
===================================================================
--- src/mainboard/arima/hdama/cache_as_ram_auto.c	(revision 4887)
+++ src/mainboard/arima/hdama/cache_as_ram_auto.c	(working copy)
@@ -19,6 +19,7 @@
 #include "southbridge/amd/amd8111/amd8111_early_smbus.c"
 #include "northbridge/amd/amdk8/raminit.h"
 #include "cpu/amd/model_fxx/apic_timer.c"
+#include "northbridge/amd/amdk8/util.c"
 #include "lib/delay.c"
 
 #include "cpu/x86/lapic/boot_cpu.c"
@@ -213,5 +214,6 @@
 
 	sdram_initialize(nodes, ctrl);
 
+	showallroutes(BIOS_DEBUG, PCI_DEV(0, 0x18, 1));
 	post_cache_as_ram();
 }
Index: src/northbridge/amd/amdk8/Makefile.inc
===================================================================
--- src/northbridge/amd/amdk8/Makefile.inc	(revision 4887)
+++ src/northbridge/amd/amdk8/Makefile.inc	(working copy)
@@ -2,6 +2,7 @@
 driver-y += misc_control.o
 obj-y += get_sblk_pci1234.o
 obj-$(CONFIG_GENERATE_ACPI_TABLES) += amdk8_acpi.o
+obj-y += util.o
 
 # Not sure what to do with these yet. How did raminit_test even work?
 # Should be a target in -y form.
Index: src/northbridge/amd/amdk8/northbridge.c
===================================================================
--- src/northbridge/amd/amdk8/northbridge.c	(revision 4887)
+++ src/northbridge/amd/amdk8/northbridge.c	(working copy)
@@ -575,6 +575,7 @@
 #if 0
 	printk_debug("NB: Function 0 Misc Control.. ");
 #endif
+	showallroutes(BIOS_DEBUG, dev_find_slot(0, PCI_DEVFN(0x18,1)));
 #if 0
 	printk_debug("done.\n");
 #endif
@@ -1075,6 +1076,7 @@
 	}
 	assign_resources(&dev->link[0]);
 
+	showallroutes(BIOS_DEBUG, dev_find_slot(0, PCI_DEVFN(0x18,1)));
 }
 
 static unsigned int amdk8_domain_scan_bus(device_t dev, unsigned int max)
Index: src/northbridge/amd/amdk8/amdk8.h
===================================================================
--- src/northbridge/amd/amdk8/amdk8.h	(revision 4887)
+++ src/northbridge/amd/amdk8/amdk8.h	(working copy)
@@ -8,4 +8,6 @@
         #include "amdk8_pre_f.h"
 #endif
 
+void showallroutes(int level, device_t dev);
+
 #endif /* AMDK8_H */
Index: src/arch/i386/lib/pci_ops_auto.c
===================================================================
--- src/arch/i386/lib/pci_ops_auto.c	(revision 4887)
+++ src/arch/i386/lib/pci_ops_auto.c	(working copy)
@@ -47,6 +47,9 @@
 {
 	unsigned int tmp;
 
+	printk_debug("%s\n", __func__);
+	printk_debug("PCI: Forcing configuration type 1\n");
+	return &pci_cf8_conf1;
 	/*
 	 * Check if configuration type 1 works.
 	 */
