Skip to contentSkip to conversation

HP Compaq nc6320 Suspend / Resume (changes in behaviour)

DISCUSSION Peter Clifton 3 participants 6 messages May 22, 2007 – May 24, 2007 ACPI

lore
Share & tools
lore
#0 lore raw

Hi,

I just updated my bios to HP's latest, and have recently been upgraded to Ubuntu Gutsy kernel version:

Linux version 2.6.22-1-generic (buildd@palmer) (gcc version 4.1.3 20070423 (prerelease) (Ubuntu 4.1.2-3ubuntu3)) #1 SMP Mon Apr 30 10:49:22 GMT 2007

For the first time ever, suspend to ram works!

Unfortunately, hibernation has broken. This happened somewhere between Feisty's 2.6.20 kernel and the one I'm using now. (Although it could have been an update released in Feisty which broke things).

I can hibernate, but after a short while being booted back up (and perhaps accessing some ACPI related thing, e.g. cpu scaling, unplugging AC etc.. it will crash (and due to being in X11 at the time, I've got no useful debug output to go on).

Does anyone know specifically if something changed to fix suspend, (with SATA drives no less!), or anything which may have broken hibernate. (Which was broken before I updated from bios F.06 to the latest today)

After resume from suspend, I see:

dmesg | grep ACPI | grep Error

[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Is this anything to worry about - should I post a dsdt for the new bios?

Kind regards,

Signature · 10 lines
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
#1 lore raw

Hi,

Quoted 10 lines · Peter Clifton

Hi,

I just updated my bios to HP's latest, and have recently been upgraded to Ubuntu Gutsy kernel version:

Linux version 2.6.22-1-generic (buildd@palmer) (gcc version 4.1.3 20070423 (prerelease) (Ubuntu 4.1.2-3ubuntu3)) #1 SMP Mon Apr 30 10:49:22 GMT 2007

For the first time ever, suspend to ram works!

That's a good news.

Quoted 4 lines

Unfortunately, hibernation has broken. This happened somewhere between Feisty's 2.6.20 kernel and the one I'm using now. (Although it could have been an update released in Feisty which broke things).

Quoted 8 lines

I can hibernate, but after a short while being booted back up (and perhaps accessing some ACPI related thing, e.g. cpu scaling, unplugging AC etc.. it will crash (and due to being in X11 at the time, I've got no useful debug output to go on).

Does anyone know specifically if something changed to fix suspend, (with SATA drives no less!), or anything which may have broken hibernate. (Which was broken before I updated from bios F.06 to the latest today)

Well, threre's a couple of such things. You may try the kernel.org kernel 2.6.22-rc2 with the hibernation and suspend patchset available from
http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc2/patches .

Quoted 9 lines

After resume from suspend, I see:

dmesg | grep ACPI | grep Error

[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Is this anything to worry about - should I post a dsdt for the new bios?

This means we are unable to set the IDE controller transfer timings after the resume. I don't know how serious this is in practice, though.

Greetings,
Rafael

#2 lore raw
Quoted 6 lines · Rafael J. Wysocki

Hi,

Quoted 3 lines · Peter Clifton

Hi,

I just updated my bios to HP's latest, and have recently been

upgraded

Quoted 5 lines
Quoted 5 lines

to Ubuntu Gutsy kernel version:

Linux version 2.6.22-1-generic (buildd@palmer) (gcc version 4.1.3 20070423 (prerelease) (Ubuntu 4.1.2-3ubuntu3)) #1 SMP Mon Apr 30 10:49:22 GMT 2007

[snip]

Quoted 1 line

Well, threre's a couple of such things. You may try the kernel.org

kernel

Quoted 2 lines

2.6.22-rc2 with the hibernation and suspend patchset available from
http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc2/patches .

I wonder if those are included in Ubuntu's kernel (I'm being dumb today, but I couldn't work out if the debian build was adding patches or not, nor which exact version they started from.

(The source filename is linux-source-2.6.22_2.6.22-5.11.tar.gz)

Just FYI, the link you posted has a file with funny permissions on it:

http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc2/patches/16-usb-use-freezable-workqueue.patch

Gives me a 403 error.

Quoted 4 lines
Quoted 4 lines

After resume from suspend, I see:

dmesg | grep ACPI | grep Error

[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution

failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT

Quoted 1 line
Quoted 1 line
[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution

failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Quoted 1 line
Quoted 1 line
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution

failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT

Quoted 1 line
Quoted 1 line
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution

failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Quoted 2 lines
Quoted 2 lines

Is this anything to worry about - should I post a dsdt for the new

bios?

Looking at the ACPI 3.0 spec:

_STM Optional control method that sets the IDE controller’s transfer timing sttings. IDE-only

(IE. shouldn't be called for an SATA drive). That may mean its for my CD writer (which shows up as hda). This is in the first SSDT, "HPQSAT" which I've attached the dissasembly of.

Quoted 1 line

This means we are unable to set the IDE controller transfer timings

after the

Quoted 1 line

resume. I don't know how serious this is in practice, though.

iasl decompiles and recompiles the dsdt and all ssdt ok (after minor tweaking due to decompile discrepancies).

The remaining warnings only relate to _BCQ (A Microsoft induced typo for _BQC?)

And, unreachable code in the _STA method of the "ACEL" device. (They have blanked that function off with a Return (0x00). Thats a shame - if it means what I think (that the acceleration sensor doesn't work).

Many places in the ACEL device code check If (_STA ()) around big blocks of code, so presumably the AML code for it is not doing a great deal. (I wounder how Windows uses it - a custom driver perhaps?)

Thanks for the great work on suspend / resume (and of course ACPI support in general) everyone!

Peter

/*
* Intel ACPI Component Architecture
* AML Disassembler version 20061109
*
* Disassembly of ssdt1.aml, Tue May 22 20:59:05 2007 *
*
* Original Table Header:

 *     Signature        "SSDT"
 *     Length           0x00000326 (806)
 *     Revision         0x01
 *     OEM ID           "HP    "
 *     OEM Table ID     "HPQSAT"
 *     OEM Revision     0x00000001 (1)
 *     Creator ID       "MSFT"
 *     Creator Revision 0x0100000E (16777230)
 */
DefinitionBlock ("ssdt1.aml", "SSDT", 1, "HP    ", "HPQSAT", 0x00000001)
{
    External (C0EC, MethodObj)    // 6 Arguments
    External (C0E8, MethodObj)    // 5 Arguments
    External (C0E6, MethodObj)    // 2 Arguments
    External (C0E7, MethodObj)    // 1 Argument?
    External (C0E4, MethodObj)    // 2 Arguments
    External (C240)
    External (\_SB_.C14A)
    External (\_SB_.C248, MethodObj)
    External (\_SB_.C241, MethodObj)    // 4 Arguments
    External (\_SB_.C002, DeviceObj)
    External (\_SB_.C002.C0DC, DeviceObj)

    Scope (\_SB.C002)
    {
        Device (C351)
        {
            Name (_ADR, 0x001F0002)
            Device (C0F6)
            {
                Name (_ADR, 0xFFFF)
                Name (C352, Package (0x06)
                {
                    0x00, 
                    0x00, 
                    0x00, 
                    0x00, 
                    0x00, 
                    0x00
                })
                Method (_SDD, 1, Serialized)
                {
                    If (LEqual (SizeOf (Arg0), 0x0200))
                    {
                        Store (0x00, Local0)
                        Store (Buffer (Multiply (SizeOf (C240), 0x02)) {}, Local1)
                        While (LLess (Local0, SizeOf (C240)))
                        {
                            Store (DerefOf (Index (C240, Local0)), Local2)
                            Multiply (Local2, 0x02, Local2)
                            Multiply (Local0, 0x02, Local3)
                            Store (DerefOf (Index (Arg0, Local2)), Index (Local1, Local3))
                            Store (DerefOf (Index (Arg0, Add (Local2, 0x01))), Index (
                                Local1, Add (Local3, 0x01)))
                            Increment (Local0)
                        }

                        \_SB.C241 (0x00010000, 0x00, Local1, C352)
                    }
                }

                Method (_GTF, 0, NotSerialized)
                {
                    Return (\_SB.C248(C352, 0x00))
                }
            }
        }
    }

    Scope (\_SB.C002.C0DC)
    {
        Name (_ADR, 0x001F0001)
        Name (C353, 0x01)
        Device (C349)
        {
            Name (_ADR, 0x00)
            Name (C34A, Package (0x05)
            {
                0x00, 
                0x00, 
                0x00, 
                0x00, 
                0x00
            })
            Method (_GTM, 0, NotSerialized)
            {
                Store (Buffer (0x14)
                    {
                        /* 0000 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        /* 0010 */    0xFF, 0xFF, 0xFF, 0xFF
                    }, Local0)
                CreateDWordField (Local0, 0x00, C34B)
                CreateDWordField (Local0, 0x04, C34C)
                CreateDWordField (Local0, 0x08, C354)
                CreateDWordField (Local0, 0x0C, C355)
                CreateDWordField (Local0, 0x10, C34D)
                Store (C0E4 (0x00, 0x00), C34B)
                Store (C0E7 (0x00), C34D)
                If (And (C34D, 0x01))
                {
                    Store (C0E6 (0x00, 0x00), C34C)
                }
                Else
                {
                    Store (C34B, C34C)
                }

                If (LOr (LEqual (And (\_SB.C14A, 0x0F), 0x07), LEqual (And (
                    C353, 0x01), 0x00)))
                {
                    Store (0x78, C354)
                    Store (0x11, C355)
                    Or (C34D, 0x0C, C34D)
                }
                Else
                {
                    Store (C0E4 (0x00, 0x01), C354)
                    If (And (C34D, 0x04))
                    {
                        Store (C0E6 (0x00, 0x01), C355)
                    }
                    Else
                    {
                        Store (C354, C355)
                    }
                }

                Return (Local0)
            }

            Method (_STM, 3, NotSerialized)
            {
                CreateDWordField (Arg0, 0x00, C34B)
                CreateDWordField (Arg0, 0x04, C34C)
                CreateDWordField (Arg0, 0x08, C354)
                CreateDWordField (Arg0, 0x0C, C355)
                CreateDWordField (Arg0, 0x10, C34D)
                If (LEqual (And (\_SB.C14A, 0x0F), 0x01))
                {
                    Or (C353, 0x01, C353)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        Store (0x00, Local0)
                        Store (Buffer (Multiply (SizeOf (C240), 0x02)) {}, Local1)
                        While (LLess (Local0, SizeOf (C240)))
                        {
                            Store (DerefOf (Index (C240, Local0)), Local2)
                            Multiply (Local2, 0x02, Local2)
                            Multiply (Local0, 0x02, Local3)
                            Store (DerefOf (Index (Arg1, Local2)), Index (Local1, Local3))
                            Store (DerefOf (Index (Arg1, Add (Local2, 0x01))), Index (
                                Local1, Add (Local3, 0x01)))
                            Increment (Local0)
                        }

                        Store (C0E8 (0x00, 0x00, C34B, C34D, Local1), Local2)
                        Store (C0EC (0x00, 0x00, C34C, C34D, Local1, Local3), \_SB.C241 (Local2, Local3, Local1, C34A))
                    }
                }
            }

            Device (C34E)
            {
                Name (_ADR, 0x00)
                Method (_GTF, 0, NotSerialized)
                {
                    Return (\_SB.C248 (C34A, 0x00))
                }
            }
        }
    }
}
#3 lore raw
Quoted 25 lines · Peter Clifton
Quoted 6 lines · Rafael J. Wysocki

Hi,

Quoted 3 lines · Peter Clifton

Hi,

I just updated my bios to HP's latest, and have recently been

upgraded

Quoted 5 lines
Quoted 5 lines

to Ubuntu Gutsy kernel version:

Linux version 2.6.22-1-generic (buildd@palmer) (gcc version 4.1.3 20070423 (prerelease) (Ubuntu 4.1.2-3ubuntu3)) #1 SMP Mon Apr 30 10:49:22 GMT 2007

[snip]

Quoted 1 line

Well, threre's a couple of such things. You may try the kernel.org

kernel

Quoted 2 lines

2.6.22-rc2 with the hibernation and suspend patchset available from
http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc2/patches .

I wonder if those are included in Ubuntu's kernel (I'm being dumb today, but I couldn't work out if the debian build was adding patches or not, nor which exact version they started from.

Quoted 7 lines

(The source filename is linux-source-2.6.22_2.6.22-5.11.tar.gz)

Just FYI, the link you posted has a file with funny permissions on it:

http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc2/patches/16-usb-use-freezable-workqueue.patch

Gives me a 403 error.

Fixed now, sorry for the inconvenience.

Greetings,
Rafael

#4 lore raw
In reply to Peter Clifton
Quoted 26 lines · Peter Clifton

Hi,

I just updated my bios to HP's latest, and have recently been upgraded to Ubuntu Gutsy kernel version:

Linux version 2.6.22-1-generic (buildd@palmer) (gcc version 4.1.3 20070423 (prerelease) (Ubuntu 4.1.2-3ubuntu3)) #1 SMP Mon Apr 30 10:49:22 GMT 2007

For the first time ever, suspend to ram works!

Unfortunately, hibernation has broken. This happened somewhere between Feisty's 2.6.20 kernel and the one I'm using now. (Although it could have been an update released in Feisty which broke things).

I can hibernate, but after a short while being booted back up (and perhaps accessing some ACPI related thing, e.g. cpu scaling, unplugging AC etc.. it will crash (and due to being in X11 at the time, I've got no useful debug output to go on).

Does anyone know specifically if something changed to fix suspend, (with SATA drives no less!), or anything which may have broken hibernate. (Which was broken before I updated from bios F.06 to the latest today)

After resume from suspend, I see:

Quoted 7 lines

dmesg | grep ACPI | grep Error

[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Is this anything to worry about - should I post a dsdt for the new bios?

STR works (also the disk(s)?)?

This is strange, bug:
http://bugzilla.kernel.org/show_bug.cgi?id=8456
is about broken SATA disks after STR.

If you think this is related to bug #8456, you might want to add yourself there or open a new bug if you think it's not.

You might want to add [email protected] (Tejun Heo), who did the latest ACPI SATA changes. Best you also add acpidump output and also CC me, pls.

Thomas

#5 lore raw
Quoted 10 lines · Thomas Renninger
Quoted 8 lines

dmesg | grep ACPI | grep Error

[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 4763.428000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C241] (Node df94c9dc), AE_AML_PACKAGE_LIMIT
[ 6417.528000] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.C002.C0DC.C349._STM] (Node df94fba8), AE_AML_PACKAGE_LIMIT

Is this anything to worry about - should I post a dsdt for the new bios?

STR works (also the disk(s)?)?

STR works, and resume - works fine afterwards. STD works, resumes, but crashes some minutes afterwards.

Quoted 10 lines

This is strange, bug:
http://bugzilla.kernel.org/show_bug.cgi?id=8456
is about broken SATA disks after STR.

If you think this is related to bug #8456, you might want to add yourself there or open a new bug if you think it's not.

You might want to add [email protected] (Tejun Heo), who did the latest ACPI SATA changes. Best you also add acpidump output and also CC me, pls.

I'll open a new bug (or bugs, keeping the STD issue separate) some time next week when I'll have a little more time to play with debugging things.

Thanks for your reply,

Regards.

Signature · 10 lines
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)