From: "Arend van Spriel" <arend-dY08KVG/lbpWk0Htik3J/w@public•gmane.org>
To: "Kay Sievers" <kay.sievers-tD+1rO4QERM@public•gmane.org>
Cc: "netdev-u79uwXL29TY76Z2rM5mHXA@public•gmane.org"
<netdev-u79uwXL29TY76Z2rM5mHXA@public•gmane.org>,
"linux-wireless-u79uwXL29TY76Z2rM5mHXA@public•gmane.org"
<linux-wireless-u79uwXL29TY76Z2rM5mHXA@public•gmane.org>,
"Tom Gundersen" <teg-B22kvLQNl6c@public•gmane.org>,
"Andy Whitcroft" <apw-Z7WLFzj8eWMS+FvcfC7Uqw@public•gmane.org>,
"Larry Finger"
<Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public•gmane.org>,
"Greg KH" <greg-U8xfFu+wG4EAvxtiuMwx3w@public•gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public•gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public•gmane.org>
Subject: Re: calling request_firmware() from module init will not work with recent/future udev versions
Date: Mon, 20 Feb 2012 18:43:54 +0100 [thread overview]
Message-ID: <4F42865A.5060006@broadcom.com> (raw)
In-Reply-To: <CAPXgP11iT9K2KcDCJvw_druf5qdNjs0jLfrbpS7CcYh5vXrz_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On 01/14/2012 04:25 PM, Kay Sievers wrote:
> We changed udev to strictly enforce sequence order and dependency
> handling of events. This seems to break some netdev drivers which
> block in modprobe until the firmware from userspace is loaded into the
> driver.
Working on the issue complicated the behavior of the driver so I decided
to take a step back to determine the actual issue.
> These are the drivers we received bug reports so far. We didn't look
> into any of details of the drivers, but according to the logs, they
> seem to block for 60 seconds in modprobe, when userspace is not
> behaving like expected:
> bnx2/bnx2-mips-06-6.2.1.fw
> rtlwifi/rtl8192sefw.bin
> brcm/bcm43xx-0.fw
The main problem is that the init_module() syscall should not block.
However, the driver I am responsible for (brcm80211) does not request
firmware in the init_module() path. It does that on the probe()
callback. So the problem is that the probe() code path is done in the
context of the init_module() syscall. So the thing to do is decouple the
probe() callback from the init_module() syscall.
One option is using the nowait version of request_firmware(), but
another option I am considering is to defer the driver registration
using a workqueue and schedule it in the init_module() syscall. That way
I think I can avoid having to call the device_unregister_driver() when
firmware loading fails.
Another thing to consider is to change the driver core subsystem and
assure the probe() callback is never done in the init_module() context.
Any opinions?
Gr. AvS
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public•gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
prev parent reply other threads:[~2012-02-20 17:43 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-14 15:25 calling request_firmware() from module init will not work with recent/future udev versions Kay Sievers
2012-01-14 17:58 ` John W. Linville
2012-01-14 18:20 ` Larry Finger
[not found] ` <4F11C75F.9030105-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2012-01-14 19:59 ` Arend van Spriel
[not found] ` <4F11DEB8.7010708-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2012-01-14 20:13 ` Larry Finger
[not found] ` <4F11E1CE.2050008-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2012-01-14 20:15 ` Emmanuel Grumbach
2012-01-14 18:45 ` Larry Finger
2012-01-14 19:26 ` Tom Gundersen
2012-01-15 10:02 ` Johannes Berg
[not found] ` <1326621743.3448.1.camel-8upI4CBIZJIJvtFkdXX2HixXY32XiHfO@public.gmane.org>
2012-01-15 15:33 ` Kay Sievers
2012-01-16 8:57 ` Johannes Berg
2012-01-16 12:05 ` Kay Sievers
2012-01-16 12:16 ` Johannes Berg
2012-07-19 10:46 ` Kay Sievers
2012-07-24 14:16 ` Johannes Berg
2012-07-24 14:32 ` Tom Gundersen
2012-07-24 17:50 ` Kay Sievers
[not found] ` <1326704259.3510.3.camel-8upI4CBIZJIJvtFkdXX2HixXY32XiHfO@public.gmane.org>
2012-02-16 12:04 ` Arend van Spriel
2012-02-16 12:38 ` Johannes Berg
[not found] ` <1329395881.3915.7.camel-8upI4CBIZJIJvtFkdXX2HixXY32XiHfO@public.gmane.org>
2012-02-16 13:09 ` Arend van Spriel
[not found] ` <4F3D0012.9070808-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2012-02-16 14:39 ` Johannes Berg
[not found] ` <CAPXgP11iT9K2KcDCJvw_druf5qdNjs0jLfrbpS7CcYh5vXrz_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-20 17:43 ` Arend van Spriel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F42865A.5060006@broadcom.com \
--to=arend-dy08kvg/lbpwk0htik3j/w@public$(echo .)gmane.org \
--cc=Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public$(echo .)gmane.org \
--cc=apw-Z7WLFzj8eWMS+FvcfC7Uqw@public$(echo .)gmane.org \
--cc=greg-U8xfFu+wG4EAvxtiuMwx3w@public$(echo .)gmane.org \
--cc=kay.sievers-tD+1rO4QERM@public$(echo .)gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public$(echo .)gmane.org \
--cc=linux-wireless-u79uwXL29TY76Z2rM5mHXA@public$(echo .)gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public$(echo .)gmane.org \
--cc=teg-B22kvLQNl6c@public$(echo .)gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox