From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Fri, 16 Mar 2007 12:08:51 +0000 Subject: Re: udev or kernel broken with rsdl 0.30 patch Message-Id: <1174046931.21549.55.camel@lov.localdomain> List-Id: References: <20070315104654.19025CA4097@mx1.ciphirelabs.net> In-Reply-To: <20070315104654.19025CA4097@mx1.ciphirelabs.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: linux-hotplug@vger.kernel.org On Fri, 2007-03-16 at 12:45 +0100, Andreas Jellinghaus wrote: > Am Freitag, 16. M=C3=A4rz 2007 12:34 schrieb Kay Sievers: > > > and debugging shows udev gets the event, but does not emit it, > > > > What shows that? > > > > > i.e. doesn't run my script. in one case it runs my script, > > > in the other case it does not. why? > > > > In both cases in your log, there are no events for the usb-device > > itself: /devices/pci0000:00/0000:00:1d.1/usb2/2-1 > > Maybe you missed to copy a few lines? >=20 > ok, here are again the criticial lines from syslog messages: with 2.6.20.= 2: > Mar 15 11:19:06 localhost udevd[2622]: udev_event_run: seq 2869 forked, p= id=20 > [6065], 'add' 'usb', 0 seconds old > Mar 15 11:19:06 localhost udevd-event[6065]: wait_for_sysfs:=20 > file '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.5/2-1.5:1.0/bus' = > appeared after 0 loops > Mar 15 11:19:06 localhost udevd-event[6065]:=20 > run_program: '/lib/udev/openct_usb' > Mar 15 11:19:07 localhost udevd-event[6065]:=20 > run_program: '/lib/udev/openct_usb' returned with status 0 > Mar 15 11:19:07 localhost udevd-event[6065]: pass_env_to_socket: passed 3= 38=20 > bytes to socket '/org/freedesktop/hal/udev_event',=20 > Mar 15 11:19:07 localhost udevd-event[6065]: run_program: '/sbin/modprobe= -Q=20 > usb:v08E6p3438d0100dc00dsc00dp00ic0Bisc00ip00' > Mar 15 11:19:07 localhost udevd-event[6065]: run_program: '/sbin/modprobe= '=20 > returned with status 1 > Mar 15 11:19:07 localhost udevd-event[6065]: pass_env_to_socket: passed -= 1=20 > bytes to socket '/org/kernel/udev/monitor',=20 > Mar 15 11:19:07 localhost udevd-event[6065]: udev_event_run: seq 2869 fin= ished > Mar 15 11:19:07 localhost udevd[2622]: udev_done: seq 2869, pid [6065] ex= it=20 > with 1, 1 seconds old >=20 > and if I add rsdl: > Mar 15 11:24:32 localhost udevd[2607]: udev_event_run: seq 2717 forked, p= id=20 > [5284], 'add' 'usb', 0 seconds old > Mar 15 11:24:32 localhost udevd-event[5284]: wait_for_sysfs:=20 > file '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.5/2-1.5:1.0/bus' = > appeared after 0 loops > Mar 15 11:24:32 localhost udevd-event[5284]: pass_env_to_socket: passed 3= 38=20 > bytes to socket '/org/freedesktop/hal/udev_event',=20 > Mar 15 11:24:32 localhost udevd-event[5284]: run_program: '/sbin/modprobe= -Q=20 > usb:v08E6p3438d0100dc00dsc00dp00ic0Bisc00ip00' > Mar 15 11:24:32 localhost udevd-event[5284]: run_program: '/sbin/modprobe= '=20 > returned with status 1 > Mar 15 11:24:32 localhost udevd-event[5284]: pass_env_to_socket: passed -= 1=20 > bytes to socket '/org/kernel/udev/monitor',=20 > Mar 15 11:24:32 localhost udevd-event[5284]: udev_event_run: seq 2717 fin= ished > Mar 15 11:24:32 localhost udevd[2607]: udev_done: seq 2717, pid [5284] ex= it=20 > with 1, 0 seconds old If you run: udevtest /devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1.5/2-1.5:1.0 it works, right? It that works, it seems the sysfs files are not created at the time you want to read them, and the attribute creation time needs to be fixed in the kernel. > same hardware, same config, same kernel (except for rsdl patch), and sud= denly > it does not spawn openct. why? how can I debug this? if I strace, it work= s=20 > fine again, so that didn't help. >=20 > > Oh, can you please talk about kernel versions, and not distro nicknames? > > I have no clue what they mean. >=20 > ok, sorry. lets skip the question why I don't get events for /dev any mor= e. >=20 > > Right, that never worked. The usb-interfaces are childs of the > > usb-device in /sys/devices. The usb_device class-devices (the ones with > > the /dev/bus node) are also just childs of the usb-device and therefore > > can't access the (sibling) interface devices. > > > > With the current usb driver core, you can't match the /dev device-node > > to interfaces, only to the device. > > > > There is a patch pending (now that the new driver core allows us to do > > that), that moves the device-node directly to the /sys/devices > > usb-device, which should solve all the issues in the future. >=20 > ok. so until that patch is in the kernel (or udev? or both?), A patch to the kernel, and a rule to udev, to create the nodes in /dev/bus/usb, from the event of the real usb-device in /sys/devices instead of the current class device. > /dev/bus/usb > will not work for udev users as /proc/bus/usb replacement, since the > rules to match the attributes of the usb device won't work. right? That works fine, to match device properties. but not to match interface properties of that device. It only works with HAL, because it has a weird hack to look at the sibling device. > is there some page documenting the compatiblity issues with udev > and the kernel? this might be interesting for other people as well. As usual, unfortunately no there is not documentation besides what the distros are doing with it. Kay ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=DEVD= EV _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel