> -----Original Message----- > From: Dmitry Torokhov [mailto:dmitry.torokhov@gmail.com] > Sent: Wednesday, August 26, 2015 3:58 AM > To: Takashi Iwai > Cc: Luis R. Rodriguez; Girdwood, Liam R; Jie, Yang; > joonas.lahtinen@linux.intel.com; Tom Gundersen; Ming Lei; Al Viro; Greg > Kroah-Hartman; Kay Sievers; Linus Torvalds; David Woodhouse; Luis > Rodriguez; lkml > Subject: Re: Problems loading firmware using built-in drivers with kernels > that use initramfs. > > On Tue, Aug 25, 2015 at 12:46 PM, Takashi Iwai wrote: > > On Tue, 25 Aug 2015 21:34:08 +0200, > > Luis R. Rodriguez wrote: > >> > >> On Tue, Aug 25, 2015 at 10:17:00AM +0100, David Woodhouse wrote: > >> > Luis, did you tell me the other day that you made the kernel get > >> > firmware directly from the file system? This regression would be yours > then? > >> > >> I didn't implement that, Linus did in 2012 (see commit abb139e75c2c > >> titled > >> "firmware: teach the kernel to load firmware files directly from the > >> filesystem"). But we used to fallback to a userspace helper when the > >> fw was not present and then Takashi made this optional via commit > >> 7b1269f778782d titled "firmware: Make user-mode helper optional". > >> Takashi noted in the Kconfig "The user-mode helper is no longer > >> required unless you have a special firmware file that resides in a > >> non-standard path". It was not clarified why that's true though, or > >> what you'd need to do to ensure that the fw would be available. It > >> would be good for us to elaborate on that. > > > > The recent udev already dropped the firmware loading feature. > > Note that even when we had udev helper to load the firmware it was not > always reliable depending on the exact point where we requested firmware. > If request happened in probe() path before we mounted root fs then we'd > never get it loaded because we'd be waiting for devices settle before > mounting rootfs. For request in probe(), is it possible to use request_firmware_nowait() to wait rootfs mounted or timeout in another thread? It looks usermodehelper_disabled is 0(at probe()) at this case then no waiting occurs here in our testing. Thanks, ~Keyon > > Either build firmware in the kernel or ramdisk (so it is always available), or > make sure request_firmware() calls are not in driver's > probe() paths. > > Thanks. > > -- > Dmitry {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I