From: Rusty Russell <rusty@rustcorp.com.au>
To: Gerd Knorr <kraxel@bytesex.org>
Cc: Gerd Knorr <kraxel@suse.de>,
Johannes Stezenbach <js@convergence.de>,
Johannes Stezenbach <js@linuxtv.org>,
Takashi Iwai <tiwai@suse.de>,
"Alexander E. Patrakov" <patrakov@ums.usu.ru>,
lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: modprobe + request_module() deadlock
Date: Fri, 26 Nov 2004 11:34:12 +1100 [thread overview]
Message-ID: <1101429252.6996.15.camel@localhost.localdomain> (raw)
In-Reply-To: <20041125160339.GA3504@bytesex>
On Thu, 2004-11-25 at 17:03 +0100, Gerd Knorr wrote:
> On Wed, Nov 24, 2004 at 04:02:31PM +1100, Rusty Russell wrote:
> > On Mon, 2004-11-22 at 17:52 +0100, Gerd Knorr wrote:
> > > > > I can fix that in the driver, by delaying the request_module() somehow
> > > > > until the saa7134 module initialization is finished. I don't think that
> > > > > this is a good idea through as it looks like I'm not the only one with
> > > > > that problem ...
> > > >
> > > > Delaying request_module() sounds ugly. Anyway, if you can
> > > > get it to work reliably...
> > >
> > > I think I can, havn't tried yet through.
>
> Untested proof-of-concept code (don't have a saa7134 card in my machine
> at the moment), but that way it could work I think. Tried to keep it
> generic. Basically it keeps a list of pending module loads and the
> dependencies. Then it hooks into the module state notifier chain and
> calls request_module() once the depending module went to LIVE state.
>
> Comments?
A little generic for my tastes. I was thinking more like the below
(equally untested). Note that strictly we should call the module
notifier for NULL at the end of the boot sequence, too.
===
static int want_empress, want_dvb;
/* These need our symbols: we must be fully loaded for them to load */
static int pending_call(struct notifier_block *self, unsigned long state,
void *module)
{
if (module != THIS_MODULE || state != MODULE_STATE_LIVE)
return NOTIFY_DONE;
if (want_empress)
request_module("saa7134-empress");
if (want_dvb)
request_module("saa7134-dvb);
return NOTIFY_DONE;
}
static struct notifier_block pending_notifier = {
.notifier_call = pending_call,
};
int init(void)
{
,,,
register_module_notifier(&pending_notifier);
}
void cleanup(void)
{
...
unregister_module_notifier(&pending_notifier);
}
--
A bad analogy is like a leaky screwdriver -- Richard Braakman
prev parent reply other threads:[~2004-11-26 19:35 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-17 22:29 modprobe + request_module() deadlock Johannes Stezenbach
2004-11-18 3:48 ` Rusty Russell
2004-11-18 13:55 ` Johannes Stezenbach
2004-11-18 19:05 ` Takashi Iwai
2004-11-19 4:04 ` Alexander E. Patrakov
2004-11-19 11:10 ` Takashi Iwai
2004-11-19 11:50 ` Gerd Knorr
2004-11-19 12:42 ` Alexander E. Patrakov
2004-11-21 8:39 ` Rusty Russell
2004-11-22 10:25 ` Gerd Knorr
2004-11-22 14:16 ` Johannes Stezenbach
2004-11-22 14:44 ` Gerd Knorr
2004-11-22 15:36 ` Johannes Stezenbach
2004-11-22 16:52 ` Gerd Knorr
2004-11-24 5:02 ` Rusty Russell
2004-11-24 12:11 ` Gerd Knorr
2004-11-25 16:03 ` Gerd Knorr
2004-11-26 0:34 ` Rusty Russell [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=1101429252.6996.15.camel@localhost.localdomain \
--to=rusty@rustcorp.com.au \
--cc=js@convergence.de \
--cc=js@linuxtv.org \
--cc=kraxel@bytesex.org \
--cc=kraxel@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=patrakov@ums.usu.ru \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.