WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] xen frontend driver module autoloading

To: Xen Development Mailing List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] xen frontend driver module autoloading
From: Gerd Hoffmann <kraxel@xxxxxxxxxx>
Date: Tue, 17 Jul 2007 15:16:44 +0200
Delivery-date: Tue, 17 Jul 2007 06:14:36 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.4 (X11/20070615)
  Hi,

This patch (against 3.1-final) 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.

please apply,

  Gerd
---
 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c   |    2 -
 linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c       |    1 
 linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c      |    1 
 linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c   |    1 
 linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c     |    1 
 linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c |   25 +++++++++++++++++
 6 files changed, 30 insertions(+), 1 deletion(-)

Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
@@ -874,7 +874,7 @@ static struct xenbus_device_id blkfront_
        { "vbd" },
        { "" }
 };
-
+MODULE_ALIAS("xen:vbd");
 
 static struct xenbus_driver blkfront = {
        .name = "vbd",
Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
@@ -2075,6 +2075,7 @@ static struct xenbus_device_id netfront_
        { "vif" },
        { "" }
 };
+MODULE_ALIAS("xen:vif");
 
 
 static struct xenbus_driver netfront = {
Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
@@ -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 = {
Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
@@ -718,6 +718,7 @@ static struct xenbus_device_id xenfb_ids
        { "vfb" },
        { "" }
 };
+MODULE_ALIAS("xen:vfb");
 
 static struct xenbus_driver xenfb = {
        .name = "vfb",
Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/fbfront/xenkbd.c
@@ -299,6 +299,7 @@ static struct xenbus_device_id xenkbd_id
        { "vkbd" },
        { "" }
 };
+MODULE_ALIAS("xen:vkbd");
 
 static struct xenbus_driver xenkbd = {
        .name = "vkbd",
Index: xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c
===================================================================
--- xenpv-3.1_15042.orig/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c
+++ xenpv-3.1_15042/linux-2.6-xen-sparse/drivers/xen/pcifront/xenbus.c
@@ -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",
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>