Date: Mon, 13 Feb 2006 19:52:40 +0100 From: Daniel Thiele <dthiele@gmx.net> To: Daniel Thiele <dthiele@gmx.net> Cc: freebsd-acpi@FreeBSD.org Subject: Re: ACPI S3 and S5 Problem with HDD on ThinkPad R40 Message-ID: <43F0D578.3040302@gmx.net> In-Reply-To: <43BA88F8.8040506@gmx.net> References: <43BA5E03.4080306@gmx.net> <43BA7167.2060500@inbox.ru> <43BA88F8.8040506@gmx.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Daniel Thiele wrote: > Rechistov Grigory wrote: >> I've heard about some commands (atacontrol ?) which allow to spin down >> hard drive, so maybe we should just put them in shutdown script? >> > > You can use ataidle (sysutils/ataidle) to put a HDD into idle or standby > mode, but putting that command into /etc/rc.shutdown will AFAIK not work > since /etc/rc.shutdown is called before the kernel syncs the disks at > the end of its shutdown process. So if you put them into standby mode > before they will spin up again for this final syncing. > > I do not know if it is possible and/or reasonable to do all the things > that ataidle does to put a HDD into standby mode somewhere after the > disks are synced in the shutdown and suspend actions the kernel does. Hi, I have a solution for the problem or at least for the S5 power off problem to be precise. I simply looked at the ataidle source code and added the standby part from ataidle to the ata driver's shutdown function. To do this just change ad_shutdown() in /usr/src/sys/dev/ata/ata-disk.c from this: static void ad_shutdown(device_t dev) { struct ata_device *atadev = device_get_softc(dev); if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE) ata_controlcmd(dev, ATA_FLUSHCACHE, 0, 0, 0); } to this: static void ad_shutdown(device_t dev) { struct ata_device *atadev = device_get_softc(dev); if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE) ata_controlcmd(dev, ATA_FLUSHCACHE, 0, 0, 0); if (atadev->param.support.command2 & ATA_SUPPORT_STANDBY) ata_controlcmd(dev, ATA_STANDBY_IMMEDIATE, 0, 0, 0); } The two extra lines should put the HDD in the "immediate standby" mode (if this mode is supported) which cause the drive to spin down before it's power is turned off during the shutdown procedure done when entering the S5 state. I hope this is the correct way to overcome this problem. At least it seems to run flawlessly since the past 5 weeks on both FreeBSD 6.0-STABLE and FreeBSD 6.1-PRERELEASE. Best regards Daniel Thiele
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43F0D578.3040302>