Skip to content
  • Hans de Goede's avatar
    libata: Add new med_power_with_dipm link_power_management_policy setting · f4ac6476
    Hans de Goede authored
    As described by Matthew Garret quite a while back:
    https://mjg59.dreamwidth.org/34868.html
    
    Intel CPUs starting with the Haswell generation need SATA links to power
    down for the "package" part of the CPU to reach low power-states like
    PC7 / P8 which bring a significant power-saving with them.
    
    The default max_performance lpm policy does not allow for these high
    PC states, both the medium_power and min_power policies do allow this.
    
    The min_power policy saves significantly more power, but there are some
    reports of some disks / SSDs not liking min_power leading to system
    crashes and in some cases even data corruption has been reported.
    
    Matthew has found a document documenting the default settings of
    Intel's IRST Windows driver with which most laptops ship:
    https://www-ssl.intel.com/content/dam/doc/reference-guide/sata-devices-implementation-recommendations.pdf
    
    
    
    Matthew wrote a patch changing med_power to match those defaults, but
    that never got anywhere as some people where reporting issues with the
    patch-set that patch was a part of.
    
    This commit is another attempt to make the default IRST driver settings
    available under Linux, but instead of changing medium_power and
    potentially introducing regressions, this commit adds a new
    med_power_with_dipm setting which is identical to the existing
    medium_power accept that it enables dipm on top, which makes it match
    the Windows IRST driver settings, which should hopefully be safe to
    use on most devices.
    
    The med_power_with_dipm setting is close to min_power, except that:
    a) It does not use host-initiated slumber mode (ASP not set),
       but it does allow device-initiated slumber
    b) It does not enable DevSlp mode
    
    On my T440s test laptop I get the following power savings when idle:
    medium_power		0.9W
    med_power_with_dipm	1.2W
    min_power		1.2W
    
    Suggested-by: default avatarMatthew Garrett <mjg59@srcf.ucam.org>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    f4ac6476