cvs commit: src/sbin/kldunload kldunload.8 kldunload.c

Nate Lawson nate at root.org
Tue Jul 13 13:42:42 PDT 2004


Poul-Henning Kamp wrote:
> In message <40F43D36.2000407 at root.org>, Nate Lawson writes:
> 
>>Have you kept up on the newbus discussions?  The tentative plan was to 
>>add quiesce functionality to it as part of device_detach().  Doing it at 
>>the module layer is a bit too low since there are events that can 
>>trigger a detach but not an unload.  For instance, any driver compiled 
>>into the kernel for an ejectable device will never be unloaded, but 
>>certainly should quiesce/detach when the device is ejected.  Getting it 
>>right in newbus automatically fixes the problem you're trying to solve 
>>since a module unload always triggers a call to device_detach() but not 
>>vice versa.
>>
>>I think duplicating this at multiple layers is not a good idea and the 
>>module level is not the right layer to implement it.
> 
> Well, since one kld can contain multiple modules, and since the modules
> get to veto an unload with MOD_UNLOAD, I don't really see how you can
> come up with something that doesn't have a MOD_QUIESCE.

There are two parts, the internal structure and interfaces.  The 
internal structure should obviously be one or more calls to 
device_detach().  The external interface does not exist yet and you're 
welcome to contribute.  There is at least a usermode component ("eject 
ed0") and a kernel mode component ("this device_t will soon be gone").
Of course, there will be more than this.

To address your specific issue, there doesn't have to be MOD_QUIESCE. 
The normal MOD_UNLOAD request will trigger (multiple calls to) 
device_detach via a TBD kernel interface.  This detach needs to be 
multiple pass (notify, gone).

> The fact that we have many modules which know nothing about newbus
> also look like a pretty solid argument for needing it at the module
> layer.

Let's focus on how to improve things, not the fact that things aren't 
perfect right now.

-- 
-Nate


More information about the cvs-all mailing list