[coreboot] [PATCH] v3: various fixes to the device code

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Wed Apr 16 18:21:28 CEST 2008


The device code had several unclear messages, leading to
confusion when analyzing the logs. Improve readability.

We also are seeing a NULL pointer dereference in reality
on some boards. Since device model experts are busy with
other stuff, add a #warning here and "upgrade" it to
#error in a few weeks.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: LinuxBIOSv3-stuff/device/device.c
===================================================================
--- LinuxBIOSv3-stuff/device/device.c	(Revision 658)
+++ LinuxBIOSv3-stuff/device/device.c	(Arbeitskopie)
@@ -290,6 +290,7 @@
 	for (curdev = bus->children; curdev; curdev = curdev->sibling) {
 		unsigned int links;
 		int i;
+#warning Missing NULL check, will explode at runtime
 		printk(BIOS_SPEW,
 		       "%s: %s(%s) dtsname %s have_resources %d enabled %d\n",
 		       __func__, bus->dev->dtsname, dev_path(bus->dev),
Index: LinuxBIOSv3-stuff/device/hypertransport.c
===================================================================
--- LinuxBIOSv3-stuff/device/hypertransport.c	(Revision 658)
+++ LinuxBIOSv3-stuff/device/hypertransport.c	(Arbeitskopie)
@@ -580,10 +580,11 @@
 	 */
 	if (old_devices) {
 		struct device *left;
+		printk(BIOS_ERR, "HT: Left over static devices:\n");
 		for (left = old_devices; left; left = left->sibling) {
-			printk(BIOS_DEBUG, "%s\n", dev_path(left));
+			printk(BIOS_ERR, "%s\n", dev_path(left));
 		}
-		printk(BIOS_ERR, "HT: Left over static devices.\n");
+		printk(BIOS_ERR, "HT: End of leftover list.\n");
 		/* Put back the left over static device, and let
 		 * pci_scan_bus() disable it.
 		 */
Index: LinuxBIOSv3-stuff/device/pci_device.c
===================================================================
--- LinuxBIOSv3-stuff/device/pci_device.c	(Revision 658)
+++ LinuxBIOSv3-stuff/device/pci_device.c	(Arbeitskopie)
@@ -883,7 +883,7 @@
 	dev = 0;
 	printk(BIOS_SPEW, "%s: list is %p, *list is %p\n", __func__, list,
 	       *list);
-	for (/* */; *list; list = &(*list)->sibling) {
+	for (; *list; list = &(*list)->sibling) {
 		printk(BIOS_SPEW, "%s: check dev %s \n", __func__,
 		       (*list)->dtsname);
 		if ((*list)->path.type != DEVICE_PATH_PCI) {
@@ -1122,10 +1122,11 @@
 	 */
 	if (old_devices) {
 		struct device *left;
+		printk(BIOS_ERR, "PCI: Left over static devices:\n");
 		for (left = old_devices; left; left = left->sibling) {
-			printk(BIOS_SPEW, "%s\n", left->dtsname);
+			printk(BIOS_ERR, "%s\n", left->dtsname);
 		}
-		banner(BIOS_SPEW, "PCI: Left over static devices.\n");
+		printk(BIOS_ERR, "PCI: End of leftover list.\n");
 	}
 
 	/* For all children that implement scan_bus() (i.e. bridges)






More information about the coreboot mailing list