On some platform, when OS enables LPM by default (eg, min_power), then, PhyRdy Change cannot be detected if ahci supports no LPM; DIPM Slumber request cannot be disallowed if ahci's CAP.PSC is set to '1' and CAP.SSC is cleared to '0', which may cause ahci to be an uncertain state (same for Partial). In ahci spec, PhyRdy Change cannot coexist with LPM; when CAP.PSC/SSC is cleared to '0', the PxSCTL.IPM field must be programmed to disallow device initiated Partial/Slumber request. Adds suports to control these cases on actual LPM capability. Runa Guo-oc (2): ahci: Add PhyRdy Change control on actual LPM capability ahci: Add PxSCTL.IPM control on actual LPM capability drivers/ata/ahci.c | 9 +++++++++ drivers/ata/libata-eh.c | 4 ++++ drivers/ata/libata-sata.c | 12 +++++++++++- include/linux/libata.h | 4 ++++ 4 files changed, 28 insertions(+), 1 deletion(-) -- 2.7.4