[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: hotplug and modalias handling (WAS: Re: RFD: Rework/extending functionality of mdev)
From: Isaac Dunham <ibid.ag () gmail ! com>
Date: 2015-03-20 0:54:21
Message-ID: 20150320005420.GC1757 () Sparta
[Download RAW message or body]
On Thu, Mar 19, 2015 at 06:02:33PM -0600, James Bowlin wrote:
> On Wed, Mar 18, 2015 at 02:48 AM, Isaac Dunham said:
> > Is this manifested as "the root device never shows up"?
>
> Yes, although we call it the boot device.
>
> > As the one who probably posted this, I can comment further:
> > I've heard of one computer where this was an issue, a couple
> > years ago; a number of people on the Puppy Linux forums were
> > experimenting with mdev, and one reported that the modalias
> > file was missing with a Broadcom wireless card.
>
> That is interesting. Do you think this could have been due to a
> bug in the broadcom driver? We don't do any networking in our
> initrd/initramfs so maybe we can get by with the faster methods
> that use modalias files instead of uevent files. The broken
> hotplugging (or whatever the problem is) is a bigger issue for
> us now even though it is small compared to the problems caused
> by the broken modprobe a year ago.
>
> > However, you may find it worth noting that "find /sys" will get
> > its list of files slightly later than globbing will.
>
> I don't know what the globbing solution is that you refer to.
Sorry, your reference to /sys/devices/ made me semi-remember this
bit (again, from the Puppy Linux forums):
grep -h ^MODALIAS= /sys/bus/*/devices/*/uevent |cut -c 10-
See:
http://www.murga-linux.com/puppy/viewtopic.php?t=78941&start=210
> took me a little while to understand the following solution from
> the alpinelinux initrd/initramfs, partly because it does not work
> here at all:
>
> find /sys -name modalias | xargs sort -u | xargs modprobe -a
>
> It fails badly whenever one or more modalias files has a space in
> the path (which is the case here). That is easily remedied with:
>
> find /sys -name modalias -print0 \
> | xargs -0 sort -u \
> | xargs modprobe -a -q -b 2>/dev/null
>
> This is probably more efficient than what I'm currently doing
> if /sys is replaced with /sys/devices. Thank you.
Ah.
Where SYSBASE is the directory you're searching in, you might prefer to use:
find $SYSBASE -name modalias -exec sort -u '{}' + | xargs modprobe ...
(ie, use find -exec instead of find -0 |xargs -0).
FYI: I find that there are uevents in /sys/bus/ and /sys/module/,
but no modalias files.
<snip>
> My latest solution is to coldplug inside the loop that looks for
> the boot device. When we were experiencing the bug in the
> smaller busybox modprobe about a year ago we tried various
> schemes of always loading certain modules but that was not very
> satisfactory. It masks the problem instead of fixing it and it.
> If loading of hardware specific modules is not 100% reliable then
> where do you draw the line of which specific modules to load on
> every machine. Likewise, loading a bunch of modules after a
> delay can in some cases just further postpone the eventual
> failure.
That sounds like a good course.
> ISTM repeated coldplugging is a reasonable compromise even if it
> is not as elegant as hotplugging. At least it only loads modules
> that correspond to the hardware.
>
> Thank you for your help. This discussion has been useful to
> me.
Glad to be of help.
Thanks,
Isaac Dunham
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic