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>