[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] Xen frontend driver module autoloading.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1184678500 -3600
# Node ID 5e294e29a43ee8a608d454353ee19b83f72d4757
# Parent  3ce2b9fc4900103af7b4f180ff6622b480d55c84
Xen frontend driver module autoloading.

Implements module autoloading for the xen frontend drivers by adding a
uevent function for the frontend xenbus and some module aliases to the
individual drivers.

From: Gerd Hoffmann <kraxel@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 drivers/xen/blkfront/blkfront.c   |    2 +-
 drivers/xen/fbfront/xenfb.c       |    1 +
 drivers/xen/fbfront/xenkbd.c      |    1 +
 drivers/xen/netfront/netfront.c   |    1 +
 drivers/xen/pcifront/xenbus.c     |    1 +
 drivers/xen/xenbus/xenbus_probe.c |   25 +++++++++++++++++++++++++
 6 files changed, 30 insertions(+), 1 deletion(-)

diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/blkfront/blkfront.c
--- a/drivers/xen/blkfront/blkfront.c   Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/blkfront/blkfront.c   Tue Jul 17 14:21:40 2007 +0100
@@ -879,7 +879,7 @@ static struct xenbus_device_id blkfront_
        { "vbd" },
        { "" }
 };
-
+MODULE_ALIAS("xen:vbd");
 
 static struct xenbus_driver blkfront = {
        .name = "vbd",
diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/fbfront/xenfb.c
--- a/drivers/xen/fbfront/xenfb.c       Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/fbfront/xenfb.c       Tue Jul 17 14:21:40 2007 +0100
@@ -718,6 +718,7 @@ static struct xenbus_device_id xenfb_ids
        { "vfb" },
        { "" }
 };
+MODULE_ALIAS("xen:vfb");
 
 static struct xenbus_driver xenfb = {
        .name = "vfb",
diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/fbfront/xenkbd.c
--- a/drivers/xen/fbfront/xenkbd.c      Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/fbfront/xenkbd.c      Tue Jul 17 14:21:40 2007 +0100
@@ -299,6 +299,7 @@ static struct xenbus_device_id xenkbd_id
        { "vkbd" },
        { "" }
 };
+MODULE_ALIAS("xen:vkbd");
 
 static struct xenbus_driver xenkbd = {
        .name = "vkbd",
diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/netfront/netfront.c
--- a/drivers/xen/netfront/netfront.c   Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/netfront/netfront.c   Tue Jul 17 14:21:40 2007 +0100
@@ -2151,6 +2151,7 @@ static struct xenbus_device_id netfront_
        { "vif" },
        { "" }
 };
+MODULE_ALIAS("xen:vif");
 
 
 static struct xenbus_driver netfront = {
diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/pcifront/xenbus.c
--- a/drivers/xen/pcifront/xenbus.c     Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/pcifront/xenbus.c     Tue Jul 17 14:21:40 2007 +0100
@@ -273,6 +273,7 @@ static struct xenbus_device_id xenpci_id
        {"pci"},
        {{0}},
 };
+MODULE_ALIAS("xen:pci");
 
 static struct xenbus_driver xenbus_pcifront_driver = {
        .name                   = "pcifront",
diff -r 3ce2b9fc4900 -r 5e294e29a43e drivers/xen/xenbus/xenbus_probe.c
--- a/drivers/xen/xenbus/xenbus_probe.c Tue Jul 17 10:19:48 2007 +0100
+++ b/drivers/xen/xenbus/xenbus_probe.c Tue Jul 17 14:21:40 2007 +0100
@@ -165,6 +165,30 @@ static int read_backend_details(struct x
        return read_otherend_details(xendev, "backend-id", "backend");
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+static int xenbus_uevent_frontend(struct device *dev, char **envp,
+                                 int num_envp, char *buffer, int buffer_size)
+{
+       struct xenbus_device *xdev;
+       int length = 0, i = 0;
+
+       if (dev == NULL)
+               return -ENODEV;
+       xdev = to_xenbus_device(dev);
+       if (xdev == NULL)
+               return -ENODEV;
+
+       /* stuff we want to pass to /sbin/hotplug */
+       add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
+                      "XENBUS_TYPE=%s", xdev->devicetype);
+       add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
+                      "XENBUS_PATH=%s", xdev->nodename);
+       add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
+                      "MODALIAS=xen:%s", xdev->devicetype);
+
+       return 0;
+}
+#endif
 
 /* Bus type for frontend drivers. */
 static struct xen_bus_type xenbus_frontend = {
@@ -180,6 +204,7 @@ static struct xen_bus_type xenbus_fronte
                .probe    = xenbus_dev_probe,
                .remove   = xenbus_dev_remove,
                .shutdown = xenbus_dev_shutdown,
+               .uevent   = xenbus_uevent_frontend,
 #endif
        },
        .dev = {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.