]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
xenbus: Print more comprehensive info about unconnected devices during boot.
authorkfraser <kfraser@localhost.localdomain>
Tue, 18 Sep 2007 08:34:09 +0000 (09:34 +0100)
committerkfraser <kfraser@localhost.localdomain>
Tue, 18 Sep 2007 08:34:09 +0000 (09:34 +0100)
Signed-off-by: Keir Fraser <keir@xensource.com>
drivers/xen/xenbus/xenbus_probe.c

index 52f0c8081250cd081d497c33e0768aab3ce95676..4eab8b6f59ef6c12d5c3e71ed7f99927d4644e13 100644 (file)
@@ -1051,6 +1051,7 @@ static int print_device_status(struct device *dev, void *data)
 {
        struct xenbus_device *xendev = to_xenbus_device(dev);
        struct device_driver *drv = data;
+       struct xenbus_driver *xendrv;
 
        /* Is this operation limited to a particular driver? */
        if (drv && (dev->driver != drv))
@@ -1060,7 +1061,10 @@ static int print_device_status(struct device *dev, void *data)
                /* Information only: is this too noisy? */
                printk(KERN_INFO "XENBUS: Device with no driver: %s\n",
                       xendev->nodename);
-       } else if (xendev->state < XenbusStateConnected) {
+               return 0;
+       }
+
+       if (xendev->state < XenbusStateConnected) {
                enum xenbus_state rstate = XenbusStateUnknown;
                if (xendev->otherend)
                        rstate = xenbus_read_driver_state(xendev->otherend);
@@ -1069,6 +1073,11 @@ static int print_device_status(struct device *dev, void *data)
                       xendev->nodename, xendev->state, rstate);
        }
 
+       xendrv = to_xenbus_driver(dev->driver);
+       if (xendrv->is_ready && !xendrv->is_ready(xendev))
+               printk(KERN_WARNING "XENBUS: Device not ready: %s\n",
+                      xendev->nodename);
+
        return 0;
 }