On Thu, 1 Nov 2007 09:41:46 +0100 Jens Axboe <jens.axboe@xxxxxxxxxx> wrote: > On Wed, Oct 31 2007, Jens Axboe wrote: > > Hi, > > > > My x60 stopped suspending about two days ago. It just freezes after > > printing > > > > Suspending console(s) > > > > where it would normally turn everything off and the 'moon' light would > > go on. Posting this message in case somebody else knows what is up, if > > not I'll do a bisect on it tomorrow. > > Did the bisect, it points to this commit: > > 1556594f913fa81d008cecfe46d7211c919a853 is first bad commit > commit 31556594f913fa81d008cecfe46d7211c919a853 > Author: Kristen Carlson Accardi <kristen.c.accardi@xxxxxxxxx> > Date: Thu Oct 25 01:33:26 2007 -0400 > > [libata] AHCI: add hw link power management support > > Booting any kernel after this commit fails suspending to ram, it just > sits there forever. > > -- > Jens Axboe > Does this patch fix your problem? It seems to get hung up while disabling DIPM, and after thinking about this a bit, I don't think we really need to do this anyway. Don't disable dipm with SET FEATURES Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@xxxxxxxxx> --- drivers/ata/libata-core.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) Index: 2.6-git/drivers/ata/libata-core.c =================================================================== --- 2.6-git.orig/drivers/ata/libata-core.c 2007-11-01 09:59:17.000000000 -0700 +++ 2.6-git/drivers/ata/libata-core.c 2007-11-02 16:35:13.000000000 -0700 @@ -676,10 +676,11 @@ static int ata_dev_set_dipm(struct ata_d if (rc) return rc; - /* disable DIPM */ - if (ata_dev_enabled(dev) && (dev->flags & ATA_DFLAG_DIPM)) - err_mask = ata_dev_set_feature(dev, - SETFEATURES_SATA_DISABLE, SATA_DIPM); + /* + * we don't have to disable DIPM since IPM flags + * disallow transitions to SLUMBER, which effectively + * disable DIPM if it does not support PARTIAL + */ break; case NOT_AVAILABLE: case MAX_PERFORMANCE: @@ -689,10 +690,11 @@ static int ata_dev_set_dipm(struct ata_d if (rc) return rc; - /* disable DIPM */ - if (ata_dev_enabled(dev) && (dev->flags & ATA_DFLAG_DIPM)) - err_mask = ata_dev_set_feature(dev, - SETFEATURES_SATA_DISABLE, SATA_DIPM); + /* + * we don't have to disable DIPM since IPM flags + * disallow all transitions which effectively + * disable DIPM anyway. + */ break; } - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html