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@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)