From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756600AbXGIPGm (ORCPT ); Mon, 9 Jul 2007 11:06:42 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753305AbXGIPGe (ORCPT ); Mon, 9 Jul 2007 11:06:34 -0400 Received: from moutng.kundenserver.de ([212.227.126.179]:55050 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750788AbXGIPGd (ORCPT ); Mon, 9 Jul 2007 11:06:33 -0400 Subject: Re: understanding firmware loader for speedtouch (kernel 2.6.21.5) From: Kay Sievers To: mikie Cc: Indan Zupancic , Duncan Sands , linux-kernel@vger.kernel.org In-Reply-To: References: <200707061620.44348.duncan.sands@math.u-psud.fr> <58019.81.207.0.53.1183749400.squirrel@secure.samage.net> <59741.81.207.0.53.1183977750.squirrel@secure.samage.net> <3ae72650707090659g283f8de8t1f6494c8acf31425@mail.gmail.com> Content-Type: text/plain Date: Mon, 09 Jul 2007 17:08:01 +0200 Message-Id: <1183993681.3226.25.camel@lov.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Content-Transfer-Encoding: 7bit X-Provags-ID: V01U2FsdGVkX194982624OVIErdTzv/23T54KbijfZlhebKEl+ iRCfd7DJHnUS1tZxmvfgtmGzG5C5kv1XimA1tg8T/JxsrTvUbR C5/AjCF5ZE1rE0J6J7VteZJqPoFNnAM Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2007-07-09 at 16:40 +0200, mikie wrote: > 2007/7/9, Kay Sievers : > > On 7/9/07, mikie wrote: > > > 2007/7/9, Indan Zupancic : > > > > On Mon, July 9, 2007 10:49, mikie wrote: > > > > > 2007/7/6, Indan Zupancic : > > > > >> On Fri, July 6, 2007 16:20, Duncan Sands wrote: > > > > >> > On Friday 6 July 2007 14:54:18 mikie wrote: > > > > >> >> Hi, > > > > >> >> > > > > >> >> I experience some problems with the speedtch.c module, especially in > > > > >> >> regards to its firmware loader. > > > > >> >> I am not quite sure if this module is going to load the firmware > > > > >> >> itself or does it use some external software to do that ? > > > > >> > > > > > >> > It loads it itself, using some external software! > > > > >> > > > > >> For information, it generates a hotplug event and the kernel calls the > > > > >> program written at /proc/sys/kernel/hotplug with certain information. > > > > >> That used to be /sbin/hotplug, became later udev, but today in general > > > > >> udev reads the uevents generated by the kernel. > > > > > > > > > > On my system the /proc/sys/kernel/hotplug points to /sbin/hotplug. > > > > > I copied your script to /sbin/hotplug and also added simple logging, > > > > > so I can see whenever the script is being started. It turns out that > > > > > the script is not started at all by the kernel... > > > > > > > > > > I am afraid that the kernel generates uevents only, could this be true? > > > > > > > > Not really, it would break backward compatibility, and if it were true, > > > > they're remove the /proc/sys/kernel/hotplug setting too. As far as I know, > > > > if it's set, that program will be executed, and if zero is written to it, only > > > > uevents are generated. > > > > > > > > Make sure that the script is executable (chmod +x) > > > > > > Yes I have set it to be executable: > > > root@srv:/sbin# ls -lah hotplug > > > -rwxr-xr-x 1 root root 934 Jul 9 09:13 hotplug > > > > > > > and has "#!/bin/sh" > > > > at the top, or else it won't work. If that's already the case, I've no idea. > > > > > > root@srv:/sbin# head hotplug > > > #!/bin/sh > > > set -e > > > > > > > > > Everything looks OK, but still it does not fire up the script... > > > > It should run, if the kernel creates events. Can you run "udevmonitor > > --env" while loading the driver? That way we can see if events are > > generated by the kernel (if you don't have it, no need to install > > udev, just download the udev tarball, type "make" and run > > "./udevmonitor --env"). > > It seems that uevents are generated: > > UEVENT[1183991915.577581] add /class/firmware/1-2:1.0 (firmware) > ACTION=add Using /sbin/hotplug works without any problems here: $ uname -a Linux lov 2.6.22-dirty #68 SMP Mon Jul 9 03:43:51 CEST 2007 x86_64 x86_64 x86_64 GNU/Linux $ cat /proc/sys/kernel/hotplug /sbin/hotplug $ ls -l /sbin/hotplug -rwxr-xr-x 1 root root 39 2007-07-09 17:02 /sbin/hotplug $ cat /sbin/hotplug #!/bin/sh set | logger -t "hotplug $$" $ tail -50 /var/log/messages ... Jul 9 17:04:33 lov hotplug 15589: ACTION=add Jul 9 17:04:33 lov hotplug 15589: BASH=/bin/sh Jul 9 17:04:33 lov hotplug 15589: BASH_ARGC=([0]="1") Jul 9 17:04:33 lov hotplug 15589: BASH_ARGV=([0]="usb_endpoint") Jul 9 17:04:33 lov hotplug 15589: BASH_LINENO=([0]="0") Jul 9 17:04:33 lov hotplug 15589: BASH_SOURCE=([0]="/sbin/hotplug") Jul 9 17:04:33 lov hotplug 15589: MAJOR=254 Jul 9 17:04:33 lov hotplug 15589: MINOR=11 Jul 9 17:04:33 lov hotplug 15589: SUBSYSTEM=usb_endpoint ... Kay