Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 09 May 2000 19:15:31 -0700
From:      Mike Smith <msmith@freebsd.org>
To:        shimon@simon-shapiro.org
Cc:        freebsd-current@freebsd.org
Subject:   Re: EVENTHANDLER_DECLARE 
Message-ID:  <200005100215.TAA21503@mass.cdrom.com>
In-Reply-To: Your message of "Tue, 09 May 2000 22:02:52 EDT." <XFMail.000509220252.shimon@simon-shapiro.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> 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.

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.

> This needs to happen after all other shutdown work was done,
> but before a physical reset is sent to the hardware.
> 
> There is no telling how long the IOP will take to return
> from flush request.

That's fine.  Again, the Mylex driver is doing exactly what you're 
talking about; I've been down this path just a few times now. 8)

> > (Note that the Mylex stuff doesn't correctly handle suspend/resume since 
> >  we don't have a decent ACPI implementation yet)
> 
> I can emulate suspend/resume in the OSM easily.
> Actually, it does that just before shutting down.
> A single line of code.

I'm assuming that you depend on the platform firmware to bring it out of 
any of the deep sleep modes, re-enumerate the PCI bus and restore all of 
its volatile state?

-- 
\\ Give a man a fish, and you feed him for a day. \\  Mike Smith
\\ Tell him he should learn how to fish himself,  \\  msmith@freebsd.org
\\ and he'll hate you for a lifetime.             \\  msmith@cdrom.com




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005100215.TAA21503>