diff options
author | Olaf Hering <olh@suse.de> | 2005-09-06 18:18:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-07 19:57:41 -0400 |
commit | 9b19d85acca488b63af96f59c8bad2dfd75506b0 (patch) | |
tree | 42dca9f6fb039abcde575b377ffd29ce4e29b1ca /drivers/ieee1394 | |
parent | 736c7b808f38f3bb72941345e11e236ec65dec3d (diff) |
[PATCH] provide MODALIAS= enviroment variable to autoload ieee1394 modules via udev
https://bugzilla.novell.com/show_bug.cgi?id=103746
Old 2.6.13 hotplug enviroment for 'plug in firewire disk' event:
==> debug.01139.ieee1394.add.8211 <==
set -- ieee1394
UDEV_LOG='7'
ACTION='add'
DEVPATH='/class/ieee1394/00010410100036e0-0'
SUBSYSTEM='ieee1394'
SEQNUM='1139'
PHYSDEVPATH='/devices/pci0001:10/0001:10:0d.0/0001:11:0a.0/fw-host0/00010410100036e0/00010410100036e0-0'
PHYSDEVBUS='ieee1394'
VENDOR_ID='000000'
MODEL_ID='001010'
GUID='00010410100036e0'
SPECIFIER_ID='00609e'
VERSION='010483'
UDEVD_EVENT='1'
Module spb2 is not loaded.
grep sbp2 /lib/modules/2.6.13-20050901172817-default/modules.alias
alias ieee1394:ven*mo*sp0000609Ever00010483* sbp2
printf 'ieee1394:ven%08Xmo%08Xsp%08Xver%08X\n' '0x000000' '0x001010' '0x00609e' '0x010483'
ieee1394:ven00000000mo00001010sp0000609Ever00010483
modprobe -v ieee1394:ven00000000mo00001010sp0000609Ever00010483
insmod /lib/modules/2.6.13-20050901172817-default/kernel/drivers/ieee1394/sbp2.ko
Providing a MODALIAS= enviroment variable with the content above will fix it.
Signed-off-by: Olaf Hering <olh@suse.de>
Cc: Ben Collins <bcollins@debian.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/ieee1394')
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index bebcc47ab06c..b23322523ef5 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c | |||
@@ -1068,6 +1068,8 @@ static int nodemgr_hotplug(struct class_device *cdev, char **envp, int num_envp, | |||
1068 | struct unit_directory *ud; | 1068 | struct unit_directory *ud; |
1069 | int i = 0; | 1069 | int i = 0; |
1070 | int length = 0; | 1070 | int length = 0; |
1071 | /* ieee1394:venNmoNspNverN */ | ||
1072 | char buf[8 + 1 + 3 + 8 + 2 + 8 + 2 + 8 + 3 + 8 + 1]; | ||
1071 | 1073 | ||
1072 | if (!cdev) | 1074 | if (!cdev) |
1073 | return -ENODEV; | 1075 | return -ENODEV; |
@@ -1094,6 +1096,12 @@ do { \ | |||
1094 | PUT_ENVP("GUID=%016Lx", (unsigned long long)ud->ne->guid); | 1096 | PUT_ENVP("GUID=%016Lx", (unsigned long long)ud->ne->guid); |
1095 | PUT_ENVP("SPECIFIER_ID=%06x", ud->specifier_id); | 1097 | PUT_ENVP("SPECIFIER_ID=%06x", ud->specifier_id); |
1096 | PUT_ENVP("VERSION=%06x", ud->version); | 1098 | PUT_ENVP("VERSION=%06x", ud->version); |
1099 | snprintf(buf, sizeof(buf), "ieee1394:ven%08Xmo%08Xsp%08Xver%08X", | ||
1100 | ud->vendor_id, | ||
1101 | ud->model_id, | ||
1102 | ud->specifier_id, | ||
1103 | ud->version); | ||
1104 | PUT_ENVP("MODALIAS=%s", buf); | ||
1097 | 1105 | ||
1098 | #undef PUT_ENVP | 1106 | #undef PUT_ENVP |
1099 | 1107 | ||