On Mon, Sep 9, 2013 at 6:33 PM, David Herrmann <dh.herrmann@xxxxxxxxx> wrote: > udev has this nice feature of creating "dead" /dev/<node> device-nodes if > it finds a devnode:<node> modalias. Once the node is accessed, the kernel > automatically loads the module that provides the node. However, this > requires udev to know the major:minor code to use for the node. This > feature was introduced by: > > commit 578454ff7eab61d13a26b568f99a89a2c9edc881 > Author: Kay Sievers <kay.sievers@xxxxxxxx> > Date: Thu May 20 18:07:20 2010 +0200 > > driver core: add devname module aliases to allow module on-demand auto-loading > > However, uhid uses dynamic minor numbers so this doesn't actually work. We > need to load uhid to know which minor it's going to use. > > Hence, allocate a static minor (just like uinput does) and we're good > to go. > > Reported-by: Tom Gundersen <teg@xxxxxxx> Thanks, this works (I only tested the creation of the device node, not the actual module loading). > Signed-off-by: David Herrmann <dh.herrmann@xxxxxxxxx> > --- > drivers/hid/uhid.c | 3 ++- > include/linux/miscdevice.h | 1 + > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c > index 5bf2fb7..93b00d7 100644 > --- a/drivers/hid/uhid.c > +++ b/drivers/hid/uhid.c > @@ -615,7 +615,7 @@ static const struct file_operations uhid_fops = { > > static struct miscdevice uhid_misc = { > .fops = &uhid_fops, > - .minor = MISC_DYNAMIC_MINOR, > + .minor = UHID_MINOR, > .name = UHID_NAME, > }; > > @@ -634,4 +634,5 @@ module_exit(uhid_exit); > MODULE_LICENSE("GPL"); > MODULE_AUTHOR("David Herrmann <dh.herrmann@xxxxxxxxx>"); > MODULE_DESCRIPTION("User-space I/O driver support for HID subsystem"); > +MODULE_ALIAS_MISCDEV(UHID_MINOR); > MODULE_ALIAS("devname:" UHID_NAME); > diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h > index 09c2300..cb35835 100644 > --- a/include/linux/miscdevice.h > +++ b/include/linux/miscdevice.h > @@ -45,6 +45,7 @@ > #define MAPPER_CTRL_MINOR 236 > #define LOOP_CTRL_MINOR 237 > #define VHOST_NET_MINOR 238 > +#define UHID_MINOR 239 > #define MISC_DYNAMIC_MINOR 255 > > struct device; > -- > 1.8.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html