Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: weird ACPI error messages on Compaq laptop



On Wed 17 Feb 2010 at 00:00:43 +0100, Rhialto wrote:
> acpitz0 at acpi0 (TZ01):ACPI Error (psargs-0464): [\_PR_.CPU0._PPC] Namespace 
> lookup failure, AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\CPUL] (Node 
> 0xffff800007b51700), AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\_TZ_.TZ01.OTHD] 
> (Node 0xffff800007b51960), AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\_TZ_.TZ01._TMP] 
> (Node 0xffff800007b51a40), AE_NOT_FOUND
>  hot 110.0C passive -273.-3C, passive cooling
> ACPI Error (psargs-0464): [\_PR_.CPU0._PPC] Namespace lookup failure, 
> AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\CPUL] (Node 
> 0xffff800007b51700), AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\_TZ_.TZ01.OTHD] 
> (Node 0xffff800007b51960), AE_NOT_FOUND
> ACPI Error (psparse-0633): Method parse/execution failed [\_TZ_.TZ01._TMP] 
> (Node 0xffff800007b51a40), AE_NOT_FOUND
> acpitz0: failed to evaluate _TMP

I had a look into this, not knowing much about ACPI. I ran acpidump to
dump my ACPI tables. It seems that Compaq/HP is using non-standard
names, since it doesn't have _TZ_ (but it does have _TS) and it also
doesn't have _PR_ (but it has _PR):


Scope(_TZ) {
    ...
    ThermalZone(TZ01) {
        Method(_HOT, 0, Serialized) {
            If(LNot(LLess(OSYS, 0x07d6))) {
                If(LEqual(TJMX, 0x64)) {
                    Store(0x69, S4TP)
                    Return(0x0ec6)
                }
                ...
            }
        }
        Method(_TMP) {
            If(ECOK) {
                Store(\_SB.PCI0.LPC.EC0.RTMP, Local0)
                If(LNot(LLess(Local0, S4TP))) {
                    CMSW(0x6f, 0x6f)
                }
                If(LEqual(CTYP, Zero)) {
                    OTHD(Local0)
                }
                Return(Add(0x0aac, Multiply(Local0, 0x0a, ), ))
            }
            Else {
                If(LEqual(CTYP, Zero)) {
                    OTHD(TPTM)
                }
                Return(Add(0x0aac, Multiply(TPTM, 0x0a, ), ))
            }
        }

This looks like _TZ.TZ01._TMP to me (instead of _TZ_...).

Note the OSYS thingie (variable) in there. It seems to get set to
different values depending on some operating system string:


        Method(_INI) {
            If(CondRefOf(_OSI, Local0)) {
                If(_OSI("Linux")) {
                    Store(0x03e8, OSYS)
                    Store(0x80, TPOS)
                    Store(One, ^LPC.EC0.ECOS)
                }
                Else {
                    Store(0x07d1, OSYS)
                    Store(0x08, TPOS)
                }
                If(_OSI("Windows\x202001\x20SP2")) {
                    Store(0x07d2, OSYS)
                    Store(0x11, TPOS)
                }
                If(_OSI("Windows\x202006")) {
                    Store(0x07d6, OSYS)
                    Store(0x40, TPOS)
                }
                If(_OSI("Windows\x202009")) {
                    Store(0x07d9, OSYS)
                }
            }
            Else {
                Store(0x07d0, OSYS)
                Store(0x04, TPOS)
            }


envstat reports on acpitz0:

[acpitz0]
  Processor Thermal Zone:      0.000  110.000                       degC
                     FAN:          0                                 RPM

Do we pretend to be Linux for the purpose of running ACPI?

Anyway, I searched for occurrences of the string _TZ_ in the kernel code
and since there were not so many of them, I tried a few combinations of
adding _TZ and _PR, and replacing _TZ_ by _TZ. I didn't hit on the right
combination though. Some made things worse; one was that envstat didn't
show much of anything at all anymore. Maybe that isn't too surprising,
since reading amldb(8) seems to suggest padding with _ is customary and
might be done implicitly.

Apart from the _TZ_ issue, ACPI sleep also doesn't work (properly).
Pressing the sleep button does nothing. Setting sysctl -w
machdep.sleep_state=3 does induce a sleep, but the wakeup doesn't
complete properly: the video-reinitialisation produces a multi-coloured
text screen, announcing Intel copyrights and stuff ("Intel(r)Cantiga PCI
Accellerated SVGA BIOS"), but that's where it stays. The machine is not
pingable.

Xubuntu does sleep properly, so it must be possible with this ACPI
implementation.

So, any ideas? I'd like to get rid of those messages every 30 seconds,
but working sleep (mode 3) would be even nicer.

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert    -- You author it, and I'll reader it.
\X/ rhialto/at/xs4all.nl      -- Cetero censeo "authored" delendum esse.


Home | Main Index | Thread Index | Old Index