Re: Who mounts sysfs?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 25, 2009 at 07:06:15PM +0100, Will Newton wrote:
> On Thu, Jun 25, 2009 at 6:13 PM, Greg KH<greg@xxxxxxxxx> wrote:
> > On Thu, Jun 25, 2009 at 05:57:51PM +0100, Will Newton wrote:
> >> On Thu, Jun 25, 2009 at 5:28 PM, Greg KH<greg@xxxxxxxxx> wrote:
> >> > On Thu, Jun 25, 2009 at 04:53:07PM +0100, Will Newton wrote:
> >> >> On Thu, Jun 25, 2009 at 4:18 PM, Greg KH<greg@xxxxxxxxx> wrote:
> >> >> > On Thu, Jun 25, 2009 at 11:36:29AM +0100, Will Newton wrote:
> >> >> >> Hi all,
> >> >> >>
> >> >> >> I'm trying to get the libertas driver working on an embedded
> >> >> >> development board and I've run into what looks like a sysfs problem.
> >> >> >> Although I'm actually using the BusyBox mdev hotplug helper rather
> >> >> >> than udev, I hope this is the right list to be asking this question.
> >> >> >
> >> >> > For busybox questions, not really, but we reserve the right to poke fun
> >> >> > at you for using mdev :)
> >> >> >
> >> >> >> What appears to be happening is I get my initramfs extracted, so I
> >> >> >> have access to the various necessary files including the hotplug
> >> >> >> helper and my firmware files. This step is taken care of by the rootfs
> >> >> >> initcall level. Then the driver initcalls are run, including the
> >> >> >> libertas setup routines, which call request_firmware. request_firmware
> >> >> >> fires off a uevent and calls the hotplug helper. The hotplug helper
> >> >> >> looks for the /sys/class/firmware entry for the libertas device, but
> >> >> >> it doesn't find one because I don't appear to have a mounted sysfs on
> >> >> >> the /sys mountpoint.
> >> >> >>
> >> >> >> So my question is: who should be mounting sysfs here? init will mount
> >> >> >> sysfs, but is run much later than the device initcalls.
> >> >> >
> >> >> > You need to mount sysfs as one of the first things to have happen.  Look
> >> >> > at your distro's startup scripts as an example of this.
> >> >>
> >> >> Yes, I want my sysfs mounted as early as possible, but userspace (via
> >> >> /sbin/init) does not get a chance to do this until after the device
> >> >> initcalls have been run. I'm interested to know if there's a standard
> >> >> way to get sysfs mounted before /sbin/init is run.
> >> >
> >> > There isn't.
> >>
> >> Ok, so we cannot expect sysfs to be mounted on /sys before /sbin/init
> >> has been run?
> >
> > How would that possibly happen?
> >
> >> What do we do with callers of request_firmware prior to /sbin/init
> >> running?
> >
> > They would fail, as no userspace filesystems would be mounted yet to
> > provide the firmware in the firstplace.
> 
> My initramfs has the firmware in it. I thought this was one of the
> reasons one might use an initramfs, to load drivers and firmware for
> your root device e.g. network devices for nfs root.

Great, then mount /sys in your initramfs, and it should be all fine.
Have you tried that?

> > Or just replay the uevents when init starts up, after you have mounted
> > sysfs, and other filesystems, so that the firmware can be properly
> > loaded.  That is what almost all distros do.
> 
> Can udev help with this? Have the distros got a standard way of doing
> this? It sounds slightly complex...

Yes, udev provides a standard way to do this, using 'udevadm trigger'.

Again, look at your desktop's distro's startup scripts for an example of
this.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux