<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>4013</bug_id>
          
          <creation_ts>2013-03-12 03:52:16 +0000</creation_ts>
          <short_desc>Firmware loading from filesystem fails with udev 182 and older kernels</short_desc>
          <delta_ts>2013-03-15 01:03:57 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>core</component>
          <version>1.4</version>
          <rep_platform>Other</rep_platform>
          <op_sys>arm</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Undecided</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Weber">rjohnweber</reporter>
          <assigned_to name="Saul Wold">sgw</assigned_to>
          <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>---</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30636</commentid>
    <comment_count>0</comment_count>
    <who name="John Weber">rjohnweber</who>
    <bug_when>2013-03-12 03:52:16 +0000</bug_when>
    <thetext>udev 182 fails to load firmware requested by drivers when request_firmware is called in the module init path.

This is seen with the brcmfmac driver (in drivers/net/wireless/brcm80211/brcmfmac).  The driver expects to load two files - a .bin file containing firmware to download and an nvram config file.  

Dump of /var/log/messages related to udevd after I load the module using modprobe:

Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: validate module index
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2119 queued, &apos;remove&apos;
 &apos;firmware&apos;
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2119 forked new worke
r [501]
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2120 queued, &apos;add&apos; &apos;d
rivers&apos;
Mar  6 15:21:01 wandboard-dual daemon.info udevd[501]: seq 2119 running
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2120 forked new worke
r [502]
Mar  6 15:21:01 wandboard-dual daemon.info udevd[501]: no db file to read /var/r
un/udev/data/+firmware:mmc1:0001:2: No such file or directory
Mar  6 15:21:01 wandboard-dual daemon.info udevd[501]: passed -1 bytes to netlin
k monitor 0x49c50
Mar  6 15:21:01 wandboard-dual daemon.info udevd[501]: seq 2119 processed with 0
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2119 done with 0
Mar  6 15:21:01 wandboard-dual daemon.info udevd[502]: seq 2120 running
Mar  6 15:21:01 wandboard-dual daemon.info udevd[502]: device 0x36b70 has devpat
h &apos;/bus/sdio/drivers/brcmfmac&apos;
Mar  6 15:21:01 wandboard-dual daemon.info udevd[502]: no db file to read /var/r
un/udev/data/+drivers:brcmfmac: No such file or directory
Mar  6 15:21:01 wandboard-dual daemon.info udevd[502]: passed -1 bytes to netlin
k monitor 0x36dc8
Mar  6 15:21:01 wandboard-dual daemon.info udevd[234]: seq 2120 done with 0
Mar  6 15:21:01 wandboard-dual daemon.info udevd[502]: seq 2120 processed with 0 

This shows up in older kernels because kernels after v3.7 incorporate the ability to load firmware from the filesystem directly, bypassing udev completely.

If I incorporate the firmware blobs into the kernel itself, firmware loads with no problems.

Prior to udev 176, one could set up rules to run an external userspace helper function to load firmware upon request into the kernel.  V176 removed this ability, adding instead internal functionality to do the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30718</commentid>
    <comment_count>1</comment_count>
    <who name="John Weber">rjohnweber</who>
    <bug_when>2013-03-15 01:03:57 +0000</bug_when>
    <thetext>After doing some more debugging, I&apos;m not convinced this is a problem with udev.  It is able to load firmware for the rtlwifi driver (Ralink RTL8192CU) with no problems.  Looking elsewhere for the root cause of the problem.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>