Bluetooth: allocate static minor for vhci
authorLucas De Marchi <lucas.demarchi@intel.com>
Tue, 18 Feb 2014 05:19:26 +0000 (02:19 -0300)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 18 Feb 2014 17:49:04 +0000 (09:49 -0800)
Commit bfacbb9 (Bluetooth: Use devname:vhci module alias for virtual HCI
driver) added the module alias to hci_vhci module so it's possible to
create the /dev/vhci node. However creating an alias without
specifying the minor doesn't allow us to create the node ahead,
triggerring module auto-load when it's first accessed.

Starting with depmod from kmod 16 we started to warn if there's a
devname alias without specifying the major and minor.

Let's do the same done for uhid, kvm, fuse and others, specifying a
fixed minor. In systems with systemd as the init the following will
happen: on early boot systemd will call "kmod static-nodes" to read
/lib/modules/$(uname -r)/modules.devname and then create the nodes. When
first accessed these "dead" nodes will trigger the module loading.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Documentation/devices.txt
drivers/bluetooth/hci_vhci.c
include/linux/miscdevice.h

index 10378cc48374cf8ffde068d4ce329ce5b5cbb205..04356f5bc3afbb8c91332aa1077a344526862af0 100644 (file)
@@ -353,6 +353,7 @@ Your cooperation is appreciated.
                133 = /dev/exttrp       External device trap
                134 = /dev/apm_bios     Advanced Power Management BIOS
                135 = /dev/rtc          Real Time Clock
+               137 = /dev/vhci         Bluetooth virtual HCI driver
                139 = /dev/openprom     SPARC OpenBoot PROM
                140 = /dev/relay8       Berkshire Products Octal relay card
                141 = /dev/relay16      Berkshire Products ISO-16 relay card
index 1ef6990a5c7e7c0387b4d9b6aafcb7a5c6f5cdc2..add1c6a720637a4009e35bb2b0a9b4e605fb59b8 100644 (file)
@@ -359,7 +359,7 @@ static const struct file_operations vhci_fops = {
 static struct miscdevice vhci_miscdev= {
        .name   = "vhci",
        .fops   = &vhci_fops,
-       .minor  = MISC_DYNAMIC_MINOR,
+       .minor  = VHCI_MINOR,
 };
 
 static int __init vhci_init(void)
@@ -385,3 +385,4 @@ MODULE_DESCRIPTION("Bluetooth virtual HCI driver ver " VERSION);
 MODULE_VERSION(VERSION);
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("devname:vhci");
+MODULE_ALIAS_MISCDEV(VHCI_MINOR);
index 3737f7218f51362ea9cf1991a66c0328143741b8..7bb6148d990fbdd89303d6edd5e5491c02095f39 100644 (file)
@@ -23,6 +23,7 @@
 #define TEMP_MINOR             131     /* Temperature Sensor */
 #define RTC_MINOR              135
 #define EFI_RTC_MINOR          136     /* EFI Time services */
+#define VHCI_MINOR             137
 #define SUN_OPENPROM_MINOR     139
 #define DMAPI_MINOR            140     /* DMAPI */
 #define NVRAM_MINOR            144