public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: kernel list <linux-kernel@vger.kernel.org>, axboe@suse.de
Subject: Re: SATA powersave patches
Date: Mon, 11 Sep 2006 12:24:15 +0200	[thread overview]
Message-ID: <4505394F.6060806@gmail.com> (raw)
In-Reply-To: <20060910224815.GC1691@elf.ucw.cz>

Hello, Pavel Machek.

Pavel Machek wrote:
> Thanks... I got it to work (on 2 the old tree, I was not able to
> forward-port it), but power savings were not too big (~0.1W, maybe).
> 
> I'm getting huge (~1W) savings by powering down SATA controller, as in
> ahci_pci_device_suspend().

Yeah, it only turns off SATA PHY, so it doesn't result in huge saving. 
IIRC, it was somewhere around 5 percent on my notebook w/ static 
linksave mode (turning PHY off on empty port).  But link powersaving 
introduces virtually no recognizable delay, so it's nice to have.

Can you check if there is any difference between [D/H]IPS and static? 
ICH6M on my notebook can't do DIPS/HIPS, so I couldn't compare them 
against static.

> It would be great to be able to power SATA
> controller down, then power it back up when it is needed... I tried
> following hack, but could not get it to work. Any ideas?

1. One way to do it would be by dynamic power management.  It would be 
nice to have wake-up mechanism at the block layer.  Idle timer can run 
in the block layer or it can be implemented in the userland.

ATM, this implies that the attached devices are powered down too 
(spindown).  As spinning up takes quite some time, we can implement 
another level of dynamic PM w/ shorter delay to wake up - drives are not 
spinned down but controllers are powered down completely.

In any case, channel reset and following revalidation are necessary on 
wake up - if the device is still spinning, this shouldn't take too long 
but it will introduce noticeable delay - probably under or around a sec.

2. Another hacky way would be implementing it as an extension of link 
powersaving.  I don't think this is a good idea tho.  Waking up a 
controller usually involves link reset which in turn requires 
revalidation and reconfiguration of attached device, which should be 
done from exception handler.

The reason why your hack doesn't work is probably this reason.  You need 
to pass the command to EH and tell it to perform full wake-up sequence 
and retry the command.

So, I think option #1 is the way to go - implementing leveled dynamic 
power management infrastructure and adding support in the block layer. 
What do you think?

Thanks.

-- 
tejun

  reply	other threads:[~2006-09-11 10:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20060908110346.GC920@elf.ucw.cz>
     [not found] ` <45015767.1090002@gmail.com>
     [not found]   ` <20060908123537.GB17640@elf.ucw.cz>
     [not found]     ` <4501655F.5000103@gmail.com>
2006-09-10 22:48       ` SATA powersave patches Pavel Machek
2006-09-11 10:24         ` Tejun Heo [this message]
2006-09-18 10:05           ` Pavel Machek
2006-09-18 10:38             ` Tejun Heo
2006-11-06 13:57               ` Pavel Machek
2006-11-06 17:44                 ` Tejun Heo
2006-11-12 18:39                   ` Pavel Machek
2006-11-21  4:30                     ` Tejun Heo
2006-11-21 23:07                       ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4505394F.6060806@gmail.com \
    --to=htejun@gmail.com \
    --cc=axboe@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox