Re: Who mounts sysfs?

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

 



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.

>> Should drivers that require firmware always be modules?
>
> Depends on your system setup :)
>
> You could use an initramfs to solve this problem :)

Well I do have an initramfs (in fact it's all I have), but I'm not
sure how I can solve this problem with it. The initramfs is extracted
just fine, but I'm not sure if it provides me with a way to mount
sysfs before the device initcalls occur.

>> I would rather build in my drivers monolithically if possible for ease
>> of deployment and boot speed.
>>
>> Is there some non-standard other way of mounting sysfs people are
>> using in this situation?
>
> Possibly an initramfs?
>
> 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...

Thanks for your patience,
--
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