Date: Tue, 10 Oct 2006 10:22:33 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-stable@freebsd.org Cc: stable@freebsd.org, Bruno Ducrot <ducrot@poupinou.org>, Bill Moran <wmoran@collaborativefusion.com> Subject: Re: Dell 1950 does not properly respond to reboot and shutdown -p Message-ID: <200610101022.33761.jhb@freebsd.org> In-Reply-To: <20061010085407.a73f02a6.wmoran@collaborativefusion.com> References: <20061004192833.GK4945@poupinou.org> <200610050516.k955Gw8b074361@ambrisko.com> <20061010085407.a73f02a6.wmoran@collaborativefusion.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 10 October 2006 08:54, Bill Moran wrote: > In response to Doug Ambrisko <ambrisko@ambrisko.com>: > > Bruno Ducrot writes: > > | On Wed, Oct 04, 2006 at 02:07:12PM -0400, Bill Moran wrote: > > | > In response to Bruno Ducrot <ducrot@poupinou.org>: > > | > > Hi, > > | > > > > | > > On Wed, Oct 04, 2006 at 12:28:35PM -0400, Bill Moran wrote: > > | > > > > > | > > > A reboot causes the OS to halt, but the hardware just sits there on the > > | > > > shutdown screen. > > | > > > > > | > > > A shutdown -p does the same. > > | > > > > | > > What exactly are the last few lines? > > | > > > | > (manually copied) > > | > > > | > ... > > | > All buffers synced. > > | > Uptime: 1m16s > > | > > > | > > | Thanks. Then this happen after print_uptime(). > > | > > | I believe one of the drivers register a shutdown_final (or > > | shutdown_post_sync) event that hang your system. I think (though I > > | may be wrong) mfi may be that one. > > | > > | It would help if you can add some printf in dev/mfi/mfi.c into the > > | mfi_shutdown() function in order to check if that assumption > > | is correct. > > > > Some what related to this we have a local hack: > > > > --- sys/kern/subr_bus.c.orig Tue Jun 27 15:49:39 2006 > > +++ sys/kern/subr_bus.c Tue Jun 27 15:49:51 2006 > > @@ -2906,6 +2906,7 @@ bus_generic_shutdown(device_t dev) > > device_t child; > > > > TAILQ_FOREACH(child, &dev->children, link) { > > + DELAY(1000); > > device_shutdown(child); > > } > > This patch seems to "fix" the problem. I'm going to replace it with > some printfs and see if I can determine which driver is actually > causing the problem (hopefully it's only one). > > Am I wrong in saying that the correct solution would be to identify the > driver that needs more time and implementing some sort of polling > mechanism to ensure the hardware is ready when the driver wants to > shut down? Well, first let's see which driver it is. :) You might be able to just remove the DELAY and add a printf and see which device is printed last. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610101022.33761.jhb>