diff -uNr freebios2/src/devices/hypertransport.c freebios2.x/src/devices/hypertransport.c
--- freebios2/src/devices/hypertransport.c	2004-10-15 23:20:04.000000000 -0700
+++ freebios2.x/src/devices/hypertransport.c	2004-12-15 10:57:10.000000000 -0800
@@ -175,7 +175,7 @@
 	/* Spin through the devices and collapse any early
 	 * hypertransport enumeration.
 	 */
-	for(devfn = 0; devfn <= 0xff; devfn += 8) {
+	for(devfn = PCI_DEVFN(1, 0); devfn <= 0xff; devfn += 8) {
 		struct device dummy;
 		uint32_t id;
 		unsigned pos, flags;
diff -uNr freebios2/src/northbridge/amd/amdk8/incoherent_ht.c freebios2.x/src/northbridge/amd/amdk8/incoherent_ht.c
--- freebios2/src/northbridge/amd/amdk8/incoherent_ht.c	2004-11-10 22:53:21.000000000 -0800
+++ freebios2.x/src/northbridge/amd/amdk8/incoherent_ht.c	2004-12-15 10:56:24.000000000 -0800
@@ -39,11 +39,21 @@
 static void ht_collapse_previous_enumeration(unsigned bus)
 {
 	device_t dev;
-	
+	uint32_t id;
+
+	/* Check if is already collapsed */
+	dev = PCI_DEV(bus, 0, 0);
+	id = pci_read_config32(dev, PCI_VENDOR_ID);
+	if ( ! ( (id == 0xffffffff) || (id == 0x00000000) ||
+		(id == 0x0000ffff) || (id == 0xffff0000) ) ) 
+	{
+		return;
+	}
+
 	/* Spin through the devices and collapse any previous
 	 * hypertransport enumeration.
 	 */
-	for(dev = PCI_DEV(bus, 0, 0); dev <= PCI_DEV(bus, 0x1f, 0x7); dev += PCI_DEV(0, 1, 0)) {
+	for(dev = PCI_DEV(bus, 1, 0); dev <= PCI_DEV(bus, 0x1f, 0x7); dev += PCI_DEV(0, 1, 0)) {
 		uint32_t id;
 		unsigned pos, flags;
 		
