At Wed, 6 Aug 2014 13:24:37 +0200,
Jean-Michel Hautbois wrote:
> 
> 2014-08-06 12:52 GMT+02:00 Takashi Iwai <ti...@suse.de>:
> > At Wed, 6 Aug 2014 12:50:28 +0200,
> > Jean-Michel Hautbois wrote:
> >>
> >> 2014-08-06 12:21 GMT+02:00 Takashi Iwai <ti...@suse.de>:
> >> > At Wed, 6 Aug 2014 11:44:14 +0200,
> >> > Jean-Michel Hautbois wrote:
> >> >>
> >> >> 2014-08-06 11:24 GMT+02:00 Takashi Iwai <ti...@suse.de>:
> >> >> > At Wed, 6 Aug 2014 11:10:27 +0200,
> >> >> > Jean-Michel Hautbois wrote:
> >> >> >>
> >> >> >> 2014-08-05 21:22 GMT+02:00 Shuah Khan <shuahk...@gmail.com>:
> >> >> >> > On Tue, Aug 5, 2014 at 10:01 AM, Takashi Iwai <ti...@suse.de> 
> >> >> >> > wrote:
> >> >> >> >>> Yes, it worked, if the firmware was in the /lib/firmware 
> >> >> >> >>> directory.
> >> >> >> >>
> >> >> >> >
> >> >> >> > ok it works when the firmware is in /lib/firmware. It sounds to me 
> >> >> >> > the
> >> >> >> > reason load fails when the firmware is under /sys/class/firmware is
> >> >> >> > fw_load_from_user_helper() returns -ENOENT when
> >> >> >> > CONFIG_FW_LOADER_USER_HELPER is disabled.
> >> >> >> >
> >> >> >> > It would be nice to see the entire dmesg with debug enabled though.
> >> >> >> >
> >> >> >> > -- Shuah
> >> >> >>
> >> >> >> It does not work with the 3.16 kernel even when firmware is in
> >> >> >> /lib/firmware, it worked before this patch is applied.
> >> >> >
> >> >> > Hm?  3.16 doesn't contain my patch yet.  It's merged for 3.17-rc1.
> >> >>
> >> >> Oh, you are right of course, I am on upstream kernel and I have your
> >> >> patch. I don't mean your match is causing the issue though ;-).
> >> >
> >> > I see.
> >> >
> >> >> >> Here is what I got in my dmesg :
> >> >> >> [    0.307856] __allocate_fw_buf: fw-lattice-ecp3.bit buf=bd81a480
> >> >> >> [    0.308029] lattice-ecp3 spi2.3: Direct firmware load for
> >> >> >> lattice-ecp3.bit failed with error -2
> >> >> >
> >> >> > It's -ENOENT.  Are you sure that you really have
> >> >> >  /lib/firmware/lattice-ecp3.bit file?
> >> >>
> >> >> Yes :
> >> >> ls -al /lib/firmware/lattice-ecp3.bit
> >> >> -rwxr-xr-x 1 root root 897753 Aug  5 15:04 
> >> >> /lib/firmware/lattice-ecp3.bit
> >> >
> >> > Then you'd better bisect...
> >> > Or, at least, put a debug code to see which file is opened in the loop
> >> > in fw_get_filesystem_firmware().
> >>
> >> Well, when this function is called, my rootfs is not yet mounted (I
> >> have a dedicated partition on a SDCard)...
> >> So I probably missed a step in order to get /lib/firmware before / is
> >> mounted... ?
> >
> > Yeah, possibly :)  Maybe you did put /lib/firmware/* into initrd in
> > the earlier tests?
> 
> Nope, it failed and when / was mounted, it was called again and used
> the firmware thanks to udev.
> This is the CONFIG_FW_LOADER_USER_HELPER config which makes that now, right ?

Not really.  The user helper is invoked when
CONFIG_FW_LOADER_USER_HELPER_FALLBACK is set.  The exception is the
case of non-udev f/w handling like dell-rbu (which passes
FW_ACTION_NOHOTPLUG).  Then the user mode helper is used as fallback
even if CONFIG_FW_LOADER_USER_HELPER_FALLBACK isn't set.

> But how can I have /lib/firmware in my initrd, that is the question I
> need to answer now :).

Pretty depends on how to create initrd.  But most programs look up the
MODULE_FIRMWARE() entries of the modules to be loaded in initrd and
put them automatically.  And it's missing in lattice-ecp3-config
driver...


Takashi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to