linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHSET] libata: implement runtime link powersave
@ 2006-07-17  6:52 Tejun Heo
  2006-07-17  6:52 ` [PATCH 03/12] libata: add more SATA specific constants and macros to ata.h Tejun Heo
                   ` (12 more replies)
  0 siblings, 13 replies; 26+ messages in thread
From: Tejun Heo @ 2006-07-17  6:52 UTC (permalink / raw)
  To: jgarzik, alan, lkml, axboe, forrest.zhao, linux-ide, htejun

Hello, all.

This is the first take of powersave patchset.  It implements runtime
link-level power management.  To avoid confusion with regular
device/controller power management (suspend/resume), it's callsed
powersave.  It primarily implements partial/slumber/phy-off power
states SATA standard specifies but if LLD has different way of
implementing link powersave, it's allowed to.  Both host-initiated and
device-initiated operations are supported.

This patchset contains the following patches.

#01-07	: misc fixes/preps for powersave
#08-10	: implements core powersave infrastructure
#11-12	: implement powersave feature for ahci and sata_sil24

Powersave can be configured at boot time or while running by writing
to kernel module parameter /sys/module/libata/parameters/powersave.
The following powersave modes are supported.

* none		: no powersave, link is powered up all the time
* HIPS		: host-initiated powersave
* DIPS		: device-initiated powersave
* static	: no powersave on occupied link, power off empty link
* HIPS/static	: HIPS on occupied link, power off empty link
* DIPS/static	: DIPS on occupied link, power off empty link

For more information, please read head messages of individual patches.

All supported modes are tested on ICH7R AHCI, ICH6M AHCI, SiI3124,
SiI3132.  Unfortunately SiI3112/4 family controllers don't support
HIPS and choke on DIPS and thus dropped from supported list.

Here are some results on my ICH6M which can only do static PS.  Each
entry is average of 10 battery discharge rate readings 10 secs apart.

 none       static     diff  pct
---------------------------------
 1140.1mA / 1222.7mA 82.6mA 6.8%
 1145.4mA / 1209.8mA 64.4mA 5.3%
 1148.6mA / 1209.9mA 61.3mA 5.0%
 1150.8mA / 1217.2mA 66.4mA 5.5%
 l153.0mA / 1220.5mA 67.5mA 5.5%

I'd really like to see how much power DIPS/HIPS can save.  If you have
a notebook with smarter ICH, please don't hesitate to benchmark.

This patchset is against.

  upstream (309bade002e9226781c2d7a015340d0089e399b5)
+ [1] fix-autopsy patch
+ [2] fix-eh_skip_recovery patch
+ [3] improve-EH-actions-and-EHI-handling patch
+ [4] PHY-reset-requires-writing-0x4-to-SControl

This patchset is also available in the following git tree.

 http://htj.dyndns.org/git/?p=libata-tj.git;a=shortlog;h=powersave
 git://htj.dyndns.org/libata-tj powersave

Thanks.

--
tejun

[1] http://article.gmane.org/gmane.linux.ide/11966
[2] http://article.gmane.org/gmane.linux.ide/12001
[3] http://article.gmane.org/gmane.linux.ide/12002
[4] http://article.gmane.org/gmane.linux.ide/11870



^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2006-07-25  8:27 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-17  6:52 [PATCHSET] libata: implement runtime link powersave Tejun Heo
2006-07-17  6:52 ` [PATCH 03/12] libata: add more SATA specific constants and macros to ata.h Tejun Heo
2006-07-19 19:32   ` Jeff Garzik
2006-07-17  6:52 ` [PATCH 02/12] libata: add ata_id_has_sata() and use it in ata_id_has_ncq() Tejun Heo
2006-07-17  6:52 ` [PATCH 04/12] libata: implement ata_all_ports list Tejun Heo
2006-07-19 19:34   ` Jeff Garzik
2006-07-17  6:52 ` [PATCH 01/12] libata: add msec_to_jiffies() Tejun Heo
2006-07-17  6:52 ` [PATCH 06/12] libata: add ata_port_nr_ready() Tejun Heo
2006-07-17  6:52 ` [PATCH 11/12] ahci: implement link powersave Tejun Heo
2006-07-19 19:51   ` Jeff Garzik
2006-07-17  6:52 ` [PATCH 08/12] libata: implement interface power management infrastructure Tejun Heo
2006-07-19 19:45   ` Jeff Garzik
2006-07-24  8:02     ` Tejun Heo
2006-07-17  6:52 ` [PATCH 10/12] libata: implement standard powersave methods Tejun Heo
2006-07-19 19:50   ` Jeff Garzik
2006-07-17  6:52 ` [PATCH 09/12] libata: implement powersave timer Tejun Heo
2006-07-19 19:48   ` Jeff Garzik
2006-07-19 20:22     ` Jens Axboe
2006-07-24  7:27       ` Tejun Heo
2006-07-25  8:01         ` Jens Axboe
2006-07-17  6:52 ` [PATCH 05/12] libata: make counting functions global Tejun Heo
2006-07-17  6:52 ` [PATCH 07/12] libata: implement sata_update_scontrol() Tejun Heo
2006-07-19 19:35   ` Jeff Garzik
2006-07-17  6:52 ` [PATCH 12/12] sata_sil24: implement link powersave Tejun Heo
2006-07-19 19:38 ` [PATCHSET] libata: implement runtime " Jeff Garzik
2006-07-24  7:33   ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).