From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oliver Neukum Date: Fri, 05 Oct 2001 08:16:32 +0000 Subject: Re: Unloading drivers, start-up, shut-down and a rewrite (a problem) Message-Id: List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org Am Freitag, 5. Oktober 2001 09:28 schrieb Keith Owens: > On Fri, 05 Oct 2001 00:13:15 -0700, > > David Brownell wrote: > >And FWIW, when I've thought of how to solve this "driver unload" > >problem in a clean way that improves user-friendliness, that's just > >what I end up wanting: a devices-per-driver count that's distinct > >from the existing uses-per-driver refcount. > > I am not convinced that we need a separate count, at least not at the > bottom layer. The module use count is a pure reference count on the > module code, rmmod does not care what the types of reference are, rmmod > just cares if it is safe to unload the code. Yes. In last consequence only the kernel cares about reference counts. Yet it is not a pure reference counter. It's possible for a module, though possibly not a good idea to bump the counter while eg running a timer. In fact you need to bump it while handling probe() and disconnect(). > >Likely "rmmod" needs a flag that says whether the device count is > >ignored, as (effectively) done today. Driver developers will want the > >flexibility to say "remove this driver even though there's hardware > >attached, I've got a bugfix". USB developers work in that mode > >today, it's quite handy. > > See above, I don't see any need to distinguish between references. If > the device is up then the module cannot be unloaded. That does assume > that all devices can be deactivated which is not currently true, to do > this properly every device driver would need an up and a down routine. The problem is not whether the driver can be unloaded without endangering system integrity. It's about whether unloading a driver breaks the desired function. Else a perfectly usable device becomes driverless all of a sudden. With the current design in unloading you need a seperate counter. > I can add a use count up/down interface to kernel/module.c without > waiting for every driver to be converted to an up/down interface. > However we have to agree on a common design for drivers, I would hate > to see some modules supporting up/down and others doing it a different > way. That would be helpful. And doing this in kernel makes handling errors in binding drivers to devices trivial. For USB the core should handle it evaluating the return value of probe(). That needs a module* in the usb_device struct. On the other hand the conventional usage counters would be simplified by this. Regards Oliver _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel