On Tue, 9 May 2000, Mike Smith wrote:

> > 
> > On 10-May-00 Mike Smith wrote:
> > >> Sorry to bother y'll, but;
> > >> 
> > >> Has anyone ever used that?  I see no trace of any kernel
> > >> code calling it, and the at_shutdown code appears to be
> > >> gone.
> > > 
> > > It's still used in the shutdown code; it was meant to be available for 
> > > general use elsewhere, but I haven't seen anyone playing with it, so 
> > > maybe the design tradeoffs were bad choices.
> > 
> > I dunno.  It seems to do anything I need;  Call me with an argument.
> > I do not even need the priority.
> 
> It won't notify you that your code is about to be removed from the kernel.
> 
> > >> BTW, for all it is worth, any caching controller not using
> > >> this is guaranteed to lose data.
> > > 
> > > Wrong layer.  You should be using the bus shutdown method; look at eg. 
> > > the Mylex driver to see how this is done.  You should probably call your 
> > > flush routine from the suspend method as well.
> > 
> > This is dangerous for the OSM.  When the i2o OSM shuts an IOP
> > down, it is history.  It will stop doing any work at all; network,
> > disk, console, mouse, whatever.  I reserve that for really, really
> > shutdown/reset.
> 
> I'm not sure I understand what you mean by "dangerous".  When your 
> shutdown method is called, you're being told that you're about to stop 
> being able to control your hardware, either because your code is about to 
> be removed from the kernel (module unload) or because the system is being 
> shut down.

Actually, DEVICE_DETACH is called when the driver is unloaded and it can
return an error which should abort the unload. If DEVICE_SHUTDOWN is
called, then you have no choice - the kernel is stopping soon and this is
your last change to tidy up.

> 
> Before you return success from your shutdown method, you must have 
> brought your hardware to a quiescent state, ready for immediate loss of 
> power.  It must not generate any more interrupts or access any more data 
> once you have returned.
> 
> You can veto your shutdown (by returning nonzero), which will fail a 
> module unload, but _will_not_ fail a kernel shutdown.

See above - you can veto detach but not shutdown.

-- 
Doug Rabson                             Mail:  [EMAIL PROTECTED]
Nonlinear Systems Ltd.                  Phone: +44 20 8442 9037




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to