Bug 12279

Summary: 2.6.28 suspend regression - HP 2510p
Product: IO/Storage Reporter: David Roka (roka)
Component: IDEAssignee: io_ide (io_ide)
Severity: normal CC: acpi-bugzilla, bzolnier, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.28 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 11808    
Attachments: /proc/interrupts 2.8.28-rc9
[PATCH][DRAFT] ide: fix IDE ACPI regression breaking suspend

Description David Roka 2008-12-23 04:17:41 UTC
Latest working kernel version:
Earliest failing kernel version: 2.6.28-rc1
Distribution: gentoo
Hardware Environment: HP 2510p
Software Environment: 2.6 kernel with ACPI builtin
Problem Description:
The sleep function worked on myHP2510 with all versions of 2.6.27, but in the 2.6.28 it did not woke up from suspend2ram. If i set acpi_sleep=s3_beep the machine beep when it wakes up, but the screen stays blank, and dont respond to anything. Neither worked with my own kernel config or generic settings.

dmesg: http://pastebin.com/m40d55a85
dmidecode: http://pastebin.com/m582f32de
lspci: http://pastebin.com/m6a6d0297
lsusb: http://pastebin.com/m6485c015
kernel config: http://pastebin.com/m78880dfb

Steps to reproduce:
echo -n mem > /sys/power/state
Comment 1 Len Brown 2008-12-23 10:01:57 UTC
Nothing jumps out in the dmesg, can you provide the dmesg
from the latest working kernel?

Can you provide the .config from the latest working
and earliest failing kernels?

Can you identify what part of suspend is failing by following
Documentation/power/basic-pm-debugging.txt ?

Can you git bisect the kernel to find out what commit
caused the failure?
Comment 2 David Roka 2008-12-23 11:50:23 UTC
dmesg from the latest working kernel: http://pastebin.com/m46820298
i used default config with suspend2ram and hdd support with both of the kernels

pm debug:
works with: freezer, devices
dont work with: platform, processors, core
Comment 3 Rafael J. Wysocki 2008-12-23 14:12:17 UTC
Hard to say why it broke.  Failure to work with 'platform' pm_test means _PTS is failing for some reason.
Comment 4 Len Brown 2008-12-23 14:17:05 UTC
A couple of curious things in the vs 2.6.28 diff...

"Using ACPI (MADT) for SMP configuration information"
is missing from the 2.8.28 dmesg...

I assume that /proc/interrutps looks the same in both cases?

< ACPI: Battery Slot [C23D] (battery absent)
> ACPI: Battery Slot [C23D] (battery present)

I'd think that detecting the battery in .28
is a good thingk, but not an expected difference...

was the battery physically present in both cases
and /proc/acpi/battery/*/* is sane in both cases?

you can try the drivers/acpi/ec.c from 2.6.27
in 2.6.28 (and verse visa) if you detect a difference.

< ACPI: Transitioning device [C3B1] to D3
< ACPI: Transitioning device [C3B2] to D3
< ACPI: Transitioning device [C3C8] to D3
< ACPI: Transitioning device [C3C9] to D3
< ACPI: Transitioning device [C3CA] to D3
< ACPI: Transitioning device [C3CB] to D3
< ACPI: Transitioning device [C3CC] to D3

Unclear why these fans are turned off in .27
and not in .28

if you can isolate the regression via git bisect, that would be ideal.
Comment 5 David Roka 2008-12-23 16:31:54 UTC
Created attachment 19461 [details]
/proc/interrupts 2.8.28-rc9
Comment 6 ykzhao 2008-12-23 17:24:04 UTC
Hi, David
    It will be ideal if you can use the git-bisect to identify the commit which causes the regression.
    Of course please attach the output of acpidump?
Comment 7 ykzhao 2008-12-23 17:30:18 UTC
Hi, David
    Will you please enable the "CONFIG_PM_TRACE" in kernel configuration and do the following test on 2.6.28-rc1? (The boot option of "acpi_sleep=s3_beep" should be added).
    a. echo 1 > /sys/power/pm_trace
    b. echo mem > /sys/power/state; dmesg >dmesg_after;
    c. press the power button and see whether the beep voice can be heard and the system can be resumed

    If the system can't be resumed, please reboot the system and check whether there exists the file of "dmesg_after". If there is no file of "dmesg_after", please look at the dmesg for things like the following:
    >Magic number: 4:156:725
    >hash matches drivers/base/power/resume.c:28
    >hash matches device 0000:01:00.0
Comment 8 ykzhao 2008-12-23 17:51:54 UTC
Hi, David
    Please ignore the comment #7 as it doesn't with the pm debug option of "platform/cpus/core".
Comment 9 David Roka 2008-12-25 03:57:12 UTC
4dde4492d850a4c9bcaa92e5bd7f4eebe3e2f5ab is first bad commit
commit 4dde4492d850a4c9bcaa92e5bd7f4eebe3e2f5ab
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Fri Oct 10 22:39:19 2008 +0200

    ide: make drive->id an union (take 2)
    Make drive->id an unnamed union so id can be accessed either by using
    'u16 *id' or 'struct hd_driveid *driveid'.  Then convert all existing
    drive->id users accordingly (using 'u16 *id' when possible).
    This is an intermediate step to make ide 'struct hd_driveid'-free.
    While at it:
    - Add missing KERN_CONTs in it821x.c.
    - Use ATA_ID_WORDS and ATA_ID_*_LEN defines.
    - Remove unnecessary checks for drive->id.
    - s/drive_table/table/ in ide_in_drive_list().
    - Cleanup ide_config_drive_speed() a bit.
    - s/drive1/dev1/ & s/drive0/dev0/ in ide_undecoded_slave().
    Fix typo in drivers/ide/ppc/pmac.c. (From Stephen Rothwell)
    There should be no functional changes caused by this patch.
    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

:040000 040000 c85b310b86eaf4429d3a69bea5994077619d2f46 addd40938d0b14a6322d331df42f4a2bd67542c4 M      drivers
:040000 040000 c486588c5626e6b2571cd0012ded18f54e081529 972d36f58ebccf2045d551eef36920323dfca782 M      include
Comment 10 Rafael J. Wysocki 2008-12-25 06:05:37 UTC
First-Bad-Commit : 4dde4492d850a4c9bcaa92e5bd7f4eebe3e2f5ab
Comment 11 Bartlomiej Zolnierkiewicz 2008-12-25 07:24:56 UTC
Created attachment 19484 [details]
[PATCH][DRAFT] ide: fix IDE ACPI regression breaking suspend 

David, please check if this patch helps.  Thanks!
Comment 12 David Roka 2008-12-25 12:57:30 UTC
Thanks, its work :)
Happy Cristmas
Comment 13 Bartlomiej Zolnierkiewicz 2009-01-11 07:59:36 UTC
The fix went in the first IDE updates pull for 2.6.29:

commit 0e63a588fc3d6a5e6bb66bacaeb11cd9093141f8
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Mon Dec 29 20:27:29 2008 +0100

    ide: fix IDE ACPI regression breaking suspend

The bug can be closed now.