linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: linux-hotplug@vger.kernel.org
Subject: Re: Adding PCMCIA support to the kernel tree -- developers needed.
Date: Mon, 05 Feb 2001 01:56:13 +0000	[thread overview]
Message-ID: <marc-linux-hotplug-98140527121174@msgid-missing> (raw)
In-Reply-To: <marc-linux-hotplug-98118528107653@msgid-missing>

> From: "Keith Owens" <kaos@ocs.com.au>
>
> FWIW there has been some discussion between kernel developers about
> redesigning the module load/unload mechanism.  Rusty Russell points out
> that controlling module use counts by exporting the module structure
> via the owner field does not work when the use count needs to be
> manipulated from an interrupt.  In Rusty's case he is thinking about
> netfilter, but the same point applies to hot unplugging.

I'm not sure I'd want module "use" count to be affected by plugging and
unplugging, but I'd like to have that kind of way to track the number of
devices associated with a module!  Normal users won't expect to see
devices become unusable (by driver removal) except by disconnecting,
for all that developers should still be able to hotswap the drivers that
aren't actively using the device.


> Current thinking is to change modules so they have four required
> functions, instead of the current two functions.
> 
>   init: Allocate resources.
>   register: Make services available.
>   unregister: Remove services.
>   exit: Deallocate resources.

I'll have to think on this a bit ... seems initially plausible, but it'll need
to fit neatly with suspend/resume and probe/disconnect processing
and I'll want to think about that.  All of those involve managing some
sort of resource or service.  I can't think of many resources/services
that really ought to be managed at the _module_ level rather than at
the granularity of individual devices ... except for modules that don't
hold device drivers, maybe!


> I think this will help hot unplugging.  When the device disappears, the
> driver internally marks its hardware as unusable and schedules an
> unconditional shutdown of itself, all out of the interrupt handler.

Maybe it won't be detected in_irq() though.  For example, USB device
drivers typically have their disconnect() routines called by real threads.
("khubd", except for root hubs.)

Also, there's the issue that modules can manage multiple devices.
Just because someone unplugged one <foo> adapter doesn't mean
the others should get brought down and the driver removed!!


> Unconditional shutdown calls unregister which stops any new code
> entering the module.  

Then clearly it should not be used with hot-unplug, since driver modules
are typically expected to handle multiple similar devices.  Unplug of one
mustn't affect the others.


>    The driver returns -EIO for all outstanding
> requests which will eventually result in the outstanding users calling
> close() or its equivalent and leaving the module.  When the use count
> finally goes to zero, exit releases the resources and the module is
> removed.  

Until that last "module is removed", it sounded like a reasonable
description of what a usb or pci disconnect() routine has to cause
when it's told that a device has gone away.


>    For built in code we do almost the same, the only difference
> is that built in code is not removed from memory.

I'd like to see that be "built-in modules or ones still coupled to
some connected device" ... so that when the last device owned
by the module goes away, it becomes eligible for removal.


- Dave




_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

  parent reply	other threads:[~2001-02-05  1:56 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-03  7:28 Adding PCMCIA support to the kernel tree -- developers needed Miles Lane
2001-02-03 10:07 ` Jeff Garzik
2001-02-03 19:27 ` David Woodhouse
2001-02-03 23:59 ` Miles Lane
2001-02-04  0:00 ` David Hinds
2001-02-04  0:05 ` David Woodhouse
2001-02-04  1:19 ` David Brownell
2001-02-04  1:58 ` Miles Lane
2001-02-04  3:26 ` Keith Owens
2001-02-04  5:59 ` Miles Lane
2001-02-04  8:56 ` David Hinds
2001-02-04  9:55 ` David Woodhouse
2001-02-04 10:00 ` David Woodhouse
2001-02-04 10:10 ` Oliver Neukum
2001-02-04 10:53 ` David Woodhouse
2001-02-04 11:37 ` David Woodhouse
2001-02-04 17:34 ` David Hinds
2001-02-04 18:02 ` Miles Lane
2001-02-04 18:16 ` Oliver Neukum
2001-02-04 18:54 ` Miles Lane
2001-02-05  1:14 ` Jeff Garzik
2001-02-05  1:56 ` David Brownell [this message]
2001-02-05  2:43 ` Miles Lane
2001-02-05  8:42 ` Miles Lane
2001-02-05 10:01 ` Keith Owens
2001-02-05 10:13 ` Keith Owens
2001-02-05 23:43 ` David Woodhouse
2001-02-05 23:45 ` David Woodhouse
2001-02-05 23:59 ` Oliver Neukum
2001-02-06  0:27 ` Miles Lane
2001-02-06  1:10 ` David Brownell
2001-02-06  1:40 ` David Brownell
2001-02-06  6:55 ` Miles Lane
2001-02-06  7:11 ` David Woodhouse
2001-02-06  7:58 ` David Hinds
2001-02-06  8:02 ` David Hinds
2001-02-06  8:13 ` David Hinds
2001-02-06  9:51 ` Oliver Neukum
2001-02-06 13:46 ` Andrew Morton
2001-02-06 15:15 ` Jeff Garzik
2001-02-06 15:20 ` David Woodhouse
2001-02-06 15:33 ` Oliver Neukum
2001-02-06 15:35 ` David Woodhouse
2001-02-06 15:54 ` Oliver Neukum
2001-02-06 16:43 ` Jeff Garzik
2001-02-06 18:56 ` David Brownell
2001-02-06 19:22 ` David Brownell
2001-02-06 19:31 ` David Brownell
2001-02-06 22:09 ` Adam J. Richter
2001-02-06 22:10 ` Andrew Morton
2001-02-06 22:50 ` Oliver Neukum
2001-02-06 23:07 ` Andrew Morton
2001-02-06 23:12 ` Andrew Morton
2001-02-06 23:14 ` Andrew Morton
2001-02-06 23:20 ` David Woodhouse
2001-02-06 23:30 ` Oliver Neukum
2001-02-06 23:34 ` Oliver Neukum
2001-02-06 23:36 ` Andrew Morton
2001-02-07  1:33 ` David Brownell
2001-02-07  2:11 ` Miles Lane
2001-02-07  2:38 ` Adam J. Richter
2001-02-07  9:02 ` Oliver Neukum
2001-02-07  9:09 ` Vojtech Pavlik
2001-02-07  9:10 ` David Woodhouse
2001-02-07  9:35 ` Oliver Neukum
2001-02-07  9:37 ` Vojtech Pavlik
2001-02-07  9:57 ` Oliver Neukum
2001-02-07 10:11 ` Vojtech Pavlik
2001-02-07 10:27 ` David Woodhouse
2001-02-07 10:29 ` Oliver Neukum
2001-02-07 10:30 ` David Woodhouse
2001-02-07 14:45 ` Oliver Neukum
2001-02-07 15:19 ` Adam J. Richter
2001-02-07 16:11 ` Oliver Neukum
2001-02-07 17:37 ` Miles Lane
2001-02-07 17:48 ` Vojtech Pavlik
2001-02-07 18:24 ` David Brownell
2001-02-07 18:42 ` David Brownell
2001-02-07 18:47 ` David Brownell
2001-02-07 18:47 ` Oliver Neukum
2001-02-07 19:00 ` David Brownell
2001-02-07 19:29 ` Vojtech Pavlik
2001-02-07 19:59 ` Miles Lane
2001-02-07 21:02 ` Oliver Neukum
2001-02-07 21:14 ` David Brownell
2001-02-07 22:43 ` Oliver Neukum
2001-02-08  7:22 ` Miles Lane
2001-02-08  9:29 ` Adam J. Richter
2001-02-08 10:24 ` Oliver Neukum
2001-02-08 12:47 ` Andrew Morton
2001-02-08 13:22 ` Oliver Neukum
2001-02-08 13:49 ` Andrew Morton
2001-02-08 14:07 ` Oliver Neukum
2001-02-08 15:00 ` Vojtech Pavlik
2001-02-08 15:10 ` Vojtech Pavlik
2001-02-08 15:13 ` Vojtech Pavlik
2001-02-09  7:42 ` Vojtech Pavlik
2001-02-09 11:48 ` Oliver Neukum
2001-02-09 12:45 ` Vojtech Pavlik
2001-02-09 13:09 ` Oliver Neukum
2001-02-09 14:15 ` David Brownell
2001-02-09 15:45 ` Vojtech Pavlik
2001-02-26 17:47 ` David Brownell
2001-02-26 21:45 ` Chris Brand
2001-02-27  7:56 ` David Hinds
2001-02-28 16:56 ` David Brownell
2001-02-28 17:32 ` David Hinds

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=marc-linux-hotplug-98140527121174@msgid-missing \
    --to=david-b@pacbell.net \
    --cc=linux-hotplug@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).