From: Max Krasnyanskiy <maxk@qualcomm.com>
To: Tejun Heo <htejun@gmail.com>
Cc: rusty@rustcorp.com.au, Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: Module loading/unloading and "The Stop Machine"
Date: Thu, 21 Feb 2008 18:16:40 -0800 [thread overview]
Message-ID: <47BE3088.3050602@qualcomm.com> (raw)
In-Reply-To: <47BE2C7B.4000507@gmail.com>
Tejun Heo wrote:
> Max Krasnyanskiy wrote:
>> Tejun Heo wrote:
>>> Max Krasnyanskiy wrote:
>>>> Thanks for the info. I guess I missed that from the code. In any case
>>>> that seems like a pretty heavy refcounting mechanism. In a sense that
>>>> every time something is loaded or unloaded entire machine freezes,
>>>> potentially for several milliseconds. Normally it's not a big deal. But
>>>> once you get more and more CPUs and/or start using realtime apps this
>>>> becomes a big deal.
>>> Module loading doesn't involve stop_machine last time I checked. It's a
>>> big deal when unloading a module but it's actually a very good trade off
>>> because it makes much hotter path (module_get/put) much cheaper. If
>>> your application can't stand stop_machine, simply don't unload a module.
>> static struct module *load_module(void __user *umod,
>> unsigned long len,
>> const char __user *uargs)
>> {
>> ...
>>
>> /* Now sew it into the lists so we can get lockdep and oops
>> * info during argument parsing. Noone should access us, since
>> * strong_try_module_get() will fail. */
>> stop_machine_run(__link_module, mod, NR_CPUS);
>> ...
>> }
>
> Ah... right. That part doesn't have anything to do with module
> reference counting as the comment suggests and can probably be removed
> by updating how kallsyms synchronize against module load/unload.
That list (updated by __link_module) is accessed in couple of other places. ie outside symbol
lookup stuff used for kallsyms.
Max
next prev parent reply other threads:[~2008-02-22 2:16 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-08 2:38 Module loading/unloading and "The Stop Machine" Max Krasnyansky
2008-02-08 23:11 ` Max Krasnyanskiy
2008-02-14 4:02 ` Tejun Heo
2008-02-22 1:24 ` Max Krasnyanskiy
2008-02-22 1:38 ` Tejun Heo
2008-02-22 1:47 ` Max Krasnyanskiy
2008-02-22 1:59 ` Tejun Heo
2008-02-22 2:16 ` Max Krasnyanskiy [this message]
2008-02-22 11:53 ` Andi Kleen
2008-02-22 22:41 ` Max Krasnyanskiy
2008-03-04 1:21 ` Rusty Russell
2008-02-14 5:02 ` Jike Song
2008-02-14 5:38 ` Tejun Heo
2008-03-04 3:51 ` Rusty Russell
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=47BE3088.3050602@qualcomm.com \
--to=maxk@qualcomm.com \
--cc=akpm@linux-foundation.org \
--cc=htejun@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=torvalds@linux-foundation.org \
/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.