From: Rusty Russell <rusty@rustcorp.com.au>
To: Linus Torvalds <torvalds@osdl.org>
Cc: stern@rowland.harvard.edu, greg@kroah.com,
linux-kernel@vger.kernel.org, mochel@digitalimplant.org
Subject: Re: PATCH: (as177) Add class_device_unregister_wait() and platform_device_unregister_wait() to the driver model core
Date: Tue, 27 Jan 2004 17:41:01 +1100 [thread overview]
Message-ID: <20040127174101.10b98a57.rusty@rustcorp.com.au> (raw)
In-Reply-To: <Pine.LNX.4.58.0401251054340.18932@home.osdl.org>
On Sun, 25 Jan 2004 11:02:58 -0800 (PST)
Linus Torvalds <torvalds@osdl.org> wrote:
> On Sun, 25 Jan 2004, Alan Stern wrote:
> >
> > Is there some reason why modules don't work like this?
>
> There's a few:
>
> - pain. pain. pain.
>
> - doing proper refcounting of modules is _really_ really hard. The reason
> is that proper refcounting is a "local" issue: you reference count a
> single data structure. It's basically impossible to make a "global"
> reference count without jumping through hoops.
>
> - lack of testing. Unloading a module happens once in a blue moon, if
> even then.
And modules do work like you proposed, if you use "rmmod --wait".
Doing proper refcounting is actually fairly easy: every function pointer
has an associated reference count (or pointer to the module containing
the refcount).
But how much pain are you prepared to put up with to have a pseudo-pagable
kernel?
> (As an example of "too painful, too slow", think of something like a
> packet filter module. You'd literally have to increment the count in every
> part that gets a packet, and decrement the count at every point where it
> lets the packet go. And since it would have to be SMP-safe, it would have
> to be a locked cycle, or we'd have to have per-CPU counters - at which
> point you now also have to worry about things like preemption and
> sleeping, which just means that it would be a _lot_ of very fragile code).
Actually, this is already handled. The module reference counts are per-cpu
and don't contain any barriers. We go to an *awful* lot of pain on remove
to synchronize, but as Linus says, it's not the normal case.
Since we hit the (atomic_t) ref to the devices on every packet, bumping
the refcount on the module is lost in the noise.
But Dave doesn't want to do it: it makes the code uglier and painful.
Cheers,
Rusty.
--
there are those who do and those who hang on and you don't see too
many doers quoting their contemporaries. -- Larry McVoy
next prev parent reply other threads:[~2004-01-27 6:56 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-23 16:58 PATCH: (as177) Add class_device_unregister_wait() and platform_device_unregister_wait() to the driver model core Alan Stern
2004-01-23 17:42 ` Linus Torvalds
2004-01-23 18:03 ` Alan Stern
2004-01-23 18:10 ` viro
2004-01-23 18:18 ` Greg KH
2004-01-23 18:15 ` Linus Torvalds
2004-01-23 18:31 ` Greg KH
2004-01-23 18:11 ` Greg KH
2004-01-23 18:19 ` Linus Torvalds
2004-01-23 18:27 ` Greg KH
2004-01-25 17:32 ` Alan Stern
2004-01-25 19:02 ` Linus Torvalds
2004-01-25 20:21 ` viro
2004-01-27 6:51 ` Rusty Russell
2004-01-27 13:56 ` Roman Zippel
2004-01-27 23:29 ` Rusty Russell
2004-01-28 2:36 ` Roman Zippel
2004-01-28 3:54 ` Rusty Russell
2004-01-25 23:12 ` Steve Youngs
2004-01-26 3:22 ` Adam Kropelin
2004-01-26 5:06 ` Steve Youngs
2004-01-26 5:21 ` Valdis.Kletnieks
2004-01-26 5:55 ` Steve Youngs
2004-01-26 6:25 ` Valdis.Kletnieks
2004-01-26 8:48 ` Helge Hafting
2004-01-26 15:50 ` Adam Kropelin
2004-01-26 16:22 ` Roman Zippel
2004-01-27 19:32 ` Russell King
2004-01-27 20:28 ` Greg KH
2004-01-27 20:29 ` Greg KH
2004-01-28 2:03 ` Roman Zippel
2004-01-28 2:17 ` viro
2004-01-28 2:53 ` Roman Zippel
2004-01-27 6:41 ` Rusty Russell [this message]
2004-01-23 19:45 ` viro
2004-01-26 5:50 ` Rusty Russell
2004-01-26 15:51 ` Alan Stern
2004-01-27 22:55 ` 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=20040127174101.10b98a57.rusty@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@digitalimplant.org \
--cc=stern@rowland.harvard.edu \
--cc=torvalds@osdl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox