Attached is a patch that contains the extra debug statements I added. Below is the new output:

before scan bus of PCI: 00:18.0
In scan bus of PCI: 00:18.0

--
Hugh Greenberg

Myles Watson wrote:


On Wed, Oct 21, 2009 at 9:31 AM, Hugh Greenberg <[email protected] <mailto:[email protected]>> wrote:


    PCI: 00:1f.0, bad id 0xffffffff
    POST: 0x25
    scan bus of PCI: 00:18.0

While we're doing this part only the last few lines (or the new lines since the last time) really matter.

It looks like it gets stuck in scan_bus.  Try adding print statements
1. after scan_bus just in case.
2. inside scan_bus in src/devices/device.c

Print out which functions are being called and we'll narrow this down.

When I get back to the lab I can start comparing to SimNOW again.

Thanks,
Myles
diff -urN -x .svn coreboot-v2.orig/src/devices/device.c coreboot-v2/src/devices/device.c
--- coreboot-v2.orig/src/devices/device.c	2009-10-21 10:14:54.000000000 -0600
+++ coreboot-v2/src/devices/device.c	2009-10-21 10:13:29.000000000 -0600
@@ -847,14 +847,20 @@
 	do_scan_bus = 1;
 	while (do_scan_bus) {
 		int link;
+		printk_debug("In scan bus of %s\n", dev_path(busdev));
 		new_max = busdev->ops->scan_bus(busdev, max);
 		do_scan_bus = 0;
 		for (link = 0; link < busdev->links; link++) {
 			if (busdev->link[link].reset_needed) {
+			        printk_debug("Reset needed for link device: %s\n", 
+					     dev_path(busdev->link[link].dev));
+				
 				if (reset_bus(&busdev->link[link])) {
 					do_scan_bus = 1;
 				} else {
 					busdev->bus->reset_needed = 1;
+					printk_debug("Setting reset_needed for %s to 1\n", 
+						     dev_path(busdev));
 				}
 			}
 		}
diff -urN -x .svn coreboot-v2.orig/src/devices/pci_device.c coreboot-v2/src/devices/pci_device.c
--- coreboot-v2.orig/src/devices/pci_device.c	2009-10-21 10:14:54.000000000 -0600
+++ coreboot-v2/src/devices/pci_device.c	2009-10-21 10:10:22.000000000 -0600
@@ -1081,7 +1081,9 @@
 	 * scan the bus behind that child.
 	 */
 	for (child = bus->children; child; child = child->sibling) {
+		printk_debug("before scan bus of %s\n", dev_path(child));
 		max = scan_bus(child, max);
+        	printk_debug("after scan bus of %s\n", dev_path(child));
 	}
 
 	/* We've scanned the bus and so we know all about what's on the other
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to