Bug 433428 - udev doesn't create by-path symlinks for virtual input devices
udev doesn't create by-path symlinks for virtual input devices
Status: CLOSED WONTFIX
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
10
All Linux
medium Severity low
: ---
: ---
Assigned To: Kernel Maintainer List
Fedora Extras Quality Assurance
: Triaged
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-02-19 03:43 EST by Pierre Ossman
Modified: 2009-12-18 01:04 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2009-12-18 01:04:24 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)

  None (edit)
Description Pierre Ossman 2008-02-19 03:43:55 EST
On thinkpads, the touchpad and trackpoint create two different input devices for
a single physical device. Both of them show up in /dev/input, but only one in
/dev/input/by-path. This means I cannot get a stable device path for the second one.

Relevant info from /proc/bus/input/devices:

I: Bus=0011 Vendor=0002 Product=0008 Version=0000
N: Name="DualPoint Stick"
P: Phys=isa0060/serio1/input1
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0 
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3

I: Bus=0011 Vendor=0002 Product=0008 Version=7301
N: Name="AlpsPS/2 ALPS DualPoint TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input1
U: Uniq=
H: Handlers=mouse1 event1 
B: EV=f
B: KEY=420 0 70000 0 0 0 0 0 0 0 0
B: REL=3
B: ABS=1000003
Comment 1 Harald Hoyer 2008-02-20 06:02:10 EST
please provide the output of:
$ for i in /dev/input/*; do echo $i; udevinfo --query=all --name=$i; done
Comment 2 Pierre Ossman 2008-02-20 09:45:11 EST
[drzeus@mjolnir]$ for i in /dev/input/*; do echo $i; udevinfo --query=all
--name=$i; done
/dev/input/by-path
node name not found
/dev/input/event0
P: /devices/virtual/input/input0/event0
N: input/event0
/dev/input/event1
P: /devices/platform/i8042/serio1/input/input1/event1
N: input/event1
S: input/by-path/platform-i8042-serio-1-event-mouse
E: ID_CLASS=mouse
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-1
/dev/input/event2
P: /devices/platform/i8042/serio0/input/input2/event2
N: input/event2
S: input/by-path/platform-i8042-serio-0-event-kbd
E: ID_CLASS=kbd
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-0
/dev/input/event3
P: /devices/platform/pcspkr/input/input3/event3
N: input/event3
S: input/by-path/platform-pcspkr-event-spkr
E: ID_CLASS=spkr
E: ID_SERIAL=noserial
E: ID_PATH=platform-pcspkr
/dev/input/event4
P: /devices/virtual/input/input4/event4
N: input/event4
/dev/input/event5
P: /devices/virtual/input/input5/event5
N: input/event5
/dev/input/event6
P: /devices/virtual/input/input6/event6
N: input/event6
/dev/input/event7
P: /devices/virtual/input/input7/event7
N: input/event7
/dev/input/mice
P: /devices/virtual/input/mice
N: input/mice
/dev/input/mouse0
P: /devices/virtual/input/input0/mouse0
N: input/mouse0
/dev/input/mouse1
P: /devices/platform/i8042/serio1/input/input1/mouse1
N: input/mouse1
S: input/by-path/platform-i8042-serio-1-mouse
E: ID_CLASS=mouse
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-1

Comment 3 Harald Hoyer 2008-02-20 11:43:47 EST
ok, please the output of  
# for i in /dev/input/mouse*; do \
    echo $i; udevinfo --query=all --name=$i --attribute-walk; \
  done
Comment 4 Pierre Ossman 2008-02-20 12:48:46 EST
/dev/input/mouse0

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/virtual/input/input0/mouse0':
    KERNEL=="mouse0"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{dev}=="13:32"

  looking at parent device '/devices/virtual/input/input0':
    KERNELS=="input0"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="DualPoint Stick"
    ATTRS{phys}=="isa0060/serio1/input1"
    ATTRS{uniq}==""
    ATTRS{modalias}=="input:b0011v0002p0008e0000-e0,1,2,k110,111,112,r0,1,amlsfw"

  looking at parent device '/devices/virtual/input':
    KERNELS=="input"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/virtual':
    KERNELS=="virtual"
    SUBSYSTEMS==""
    DRIVERS==""

/dev/input/mouse1

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/i8042/serio1/input/input1/mouse1':
    KERNEL=="mouse1"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{dev}=="13:33"

  looking at parent device '/devices/platform/i8042/serio1/input/input1':
    KERNELS=="input1"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="AlpsPS/2 ALPS DualPoint TouchPad"
    ATTRS{phys}=="isa0060/serio1/input0"
    ATTRS{uniq}==""
   
ATTRS{modalias}=="input:b0011v0002p0008e7301-e0,1,2,3,k110,111,112,145,14A,r0,1,a0,1,18,mlsfw"

  looking at parent device '/devices/platform/i8042/serio1/input':
    KERNELS=="input"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/platform/i8042/serio1':
    KERNELS=="serio1"
    SUBSYSTEMS=="serio"
    DRIVERS=="psmouse"
    ATTRS{description}=="i8042 AUX port"
    ATTRS{modalias}=="serio:ty01pr00id00ex00"
    ATTRS{bind_mode}=="auto"
    ATTRS{protocol}=="AlpsPS/2"
    ATTRS{rate}=="100"
    ATTRS{resolution}=="200"
    ATTRS{resetafter}=="5"
    ATTRS{resync_time}=="0"

  looking at parent device '/devices/platform/i8042':
    KERNELS=="i8042"
    SUBSYSTEMS=="platform"
    DRIVERS=="i8042"
    ATTRS{modalias}=="platform:i8042"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""

/dev/input/mouse2

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/hci0/acl0050F27FB8EE/input/input8/mouse2':
    KERNEL=="mouse2"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{dev}=="13:34"

  looking at parent device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/hci0/acl0050F27FB8EE/input/input8':
    KERNELS=="input8"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="Microsoft Mouse"
    ATTRS{phys}=="00:1E:4C:FC:DD:C3"
    ATTRS{uniq}=="00:50:F2:7F:B8:EE"
   
ATTRS{modalias}=="input:b0005v045Ep007Ce0033-e0,1,2,4,k110,111,112,113,114,r0,1,8,am4,lsfw"

  looking at parent device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/hci0/acl0050F27FB8EE/input':
    KERNELS=="input"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/hci0/acl0050F27FB8EE':
    KERNELS=="acl0050F27FB8EE"
    SUBSYSTEMS=="bluetooth"
    DRIVERS==""
    ATTRS{type}=="ACL"
    ATTRS{address}=="00:50:F2:7F:B8:EE"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/hci0':
    KERNELS=="hci0"
    SUBSYSTEMS=="bluetooth"
    DRIVERS==""
    ATTRS{type}=="USB"
    ATTRS{name}=="Ossman_s Thinkpad"
    ATTRS{class}=="0x00010c"
    ATTRS{address}=="00:1E:4C:FC:DD:C3"
    ATTRS{features}=="0xffff8ffe9bf90080"
    ATTRS{manufacturer}=="15"
    ATTRS{hci_version}=="3"
    ATTRS{hci_revision}=="8491"
    ATTRS{inquiry_cache}==""
    ATTRS{idle_timeout}=="0"
    ATTRS{sniff_max_interval}=="800"
    ATTRS{sniff_min_interval}=="80"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0':
    KERNELS=="3-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="hci_usb"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{bInterfaceClass}=="e0"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="01"
    ATTRS{modalias}=="usb:v0A5Cp2110d0100dcE0dsc01dp01icE0isc01ip01"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-1':
    KERNELS=="3-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{dev}=="189:260"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 4"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="399726"
    ATTRS{idVendor}=="0a5c"
    ATTRS{idProduct}=="2110"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="e0"
    ATTRS{bDeviceSubClass}=="01"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="5"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Broadcom Corp"
    ATTRS{product}=="BCM2045B"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{dev}=="189:256"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="91"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="1"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.25-rc2-00016-g929e681-dirty uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}=="0000:00:1a.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0':
    KERNELS=="0000:00:1a.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x2834"
    ATTRS{subsystem_vendor}=="0x17aa"
    ATTRS{subsystem_device}=="0x20aa"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="20"
    ATTRS{local_cpus}=="3"
    ATTRS{modalias}=="pci:v00008086d00002834sv000017AAsd000020AAbc0Csc03i00"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
Comment 5 Harald Hoyer 2008-02-20 13:20:34 EST
ID_PATH is missing from "DualPoint Stick", hence no by-path

reassigning to kernel
Comment 6 Chuck Ebbert 2008-02-20 18:54:20 EST
Pierre, it looks like this is an upstream issue, better addressed on
linux-kernel and/or linux-input.
Comment 7 Pierre Ossman 2008-02-21 01:03:25 EST
I'm not sure what you think is missing though. The ID_PATH is something udev
generates, not something exported by the kernel. So at this point I don't see
how the problem can be fixed in the kernel end.
Comment 8 Harald Hoyer 2008-02-21 02:26:03 EST
oops.. sry.. yes, correct.
Comment 9 Kay Sievers 2008-03-11 12:16:44 EDT
But udev/PATH_ID needs valid parent device information to generate persistent
links. This device is not virtual at all. The kernel should set the correct
parent device, and all will just work fine, I expect.
Comment 10 Kay Sievers 2008-03-11 12:20:09 EDT
See, this looks bogus:
  P: Phys=isa0060/serio1/input1
  S: Sysfs=/devices/virtual/input/input0

It is hardware backed, but shows up in "virtual".
Comment 11 Bug Zapper 2008-05-14 01:16:45 EDT
Changing version to '9' as part of upcoming Fedora 9 GA.
More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 12 Pierre Ossman 2008-06-23 13:26:56 EDT
Any update?
Comment 13 Bug Zapper 2008-11-25 21:07:17 EST
This bug appears to have been reported against 'rawhide' during the Fedora 10 development cycle.
Changing version to '10'.

More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 14 Bug Zapper 2009-11-18 04:16:07 EST
This message is a reminder that Fedora 10 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 10.  It is Fedora's policy to close all
bug reports from releases that are no longer maintained.  At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '10'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 10's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 10 is end of life.  If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora please change the 'version' of this 
bug to the applicable version.  If you are unable to change the version, 
please add a comment here and someone will do it for you.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events.  Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 15 Bug Zapper 2009-12-18 01:04:24 EST
Fedora 10 changed to end-of-life (EOL) status on 2009-12-17. Fedora 10 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.

Note You need to log in before you can comment on or make changes to this bug.