System reports at boot: [ 1.330173] ACPI Error (psargs-0359): [\_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND [ 1.330186] ACPI Error (psparse-0537): Method parse/execution failed [\CPUL] (Node f6c15ae0), AE_NOT_FOUND [ 1.330243] ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ01.OTHD] (Node f6c15918), AE_NOT_FOUND [ 1.330303] ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ01._TMP] (Node f6c15870), AE_NOT_FOUND I've disassembled DSDT but nothing seems evidently wrong. Problem appears with kernels 2.6.26, 2.6.30, 2.6.32, 2.6.33 (currently in use) I've enabled ACPI debug and noticed that "Initialisation of Region [_PR_]" is not reported. Obviously, processor is not recognised and all services depending on it fail (power, speedstep, etc.) Firmware is F.13 (25/01/2010), the latest available from HP. Any hint on what to address the attention is welcome.
Created attachment 26031 [details] Disassembly listing of DSDT this is the disassembled DSDT
Created attachment 26032 [details] Output of lshw
Created attachment 26033 [details] dmesg output With ACPI debug enabled, acpi.debug_level=0xFFFFFFFF
Please post the acpidump for the machine.
Created attachment 26050 [details] acpidump output
There are two dynamic tables that look like they should be loaded. Please post the acpidump for both. They are at: 0xBBA70E18 0xBBA6F598
Created attachment 26056 [details] script to get acpi tables please run this script to get all the ACPI tables, and attach them here, better in a tarball.
Created attachment 26057 [details] output of acpidump -a 0xBBA6F598 -l 0x537 ~$ sudo acpidump -a 0xBBA6F598 -o acpidump-BBA6F598.log ACPI tables were not found. If you know location of RSD PTR table (from dmesg, etc), supply it with either --addr or -a option ~$ dmesg | grep bba6f598 [ 6.774512] ACPI: SSDT bba6f598 00537 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) ~$ sudo acpidump -a 0xBBA6F598 -l 0x537 -o acpidump-BBA6F598.log
Created attachment 26058 [details] all the ACPI tables resulting from Zhang's script
The _PPC object for CPU0 is defined in SSDT2: Scope (\_PR.CPU0) { Name (_PPC, Zero) It looks as if SSDT2 is either not being loaded, or is not loaded at the time that _PPC is accessed from the DSDT. SSDT2 would be dynamically loaded from the primary SSDT. The primary SSDT is loaded at table initialization time. I'll look around some more for some answers. If I don't find anything, perhaps Zhang Rui can help some more.
*** Bug 15800 has been marked as a duplicate of this bug. ***
What if I create a custom DSDT merging the code of SSDT2?
It would be more interesting to modify the first SSDT (which is in the XSDT) to unconditionally load the additional SSDTs. Original code: If (And (CFGD, One)) { If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC0, 0x09), 0x09)), LNot (And (SDTL, One)))) { Or (SDTL, One, SDTL) OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, One)), DerefOf (Index (SSDT, 0x02 ))) Load (IST0, HI0) } } If (And (CFGD, 0xF0)) { If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC0, 0x18 )), LNot (And (SDTL, 0x02)))) { Or (SDTL, 0x02, SDTL) OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08 ))) Load (CST0, HC0) } } New code: Or (SDTL, One, SDTL) OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, One)), DerefOf (Index (SSDT, 0x02 ))) Load (IST0, HI0) Or (SDTL, 0x02, SDTL) OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08 ))) Load (CST0, HC0) Just strip the surrounding If statements
I've done the following: 1) edited the DSDT.dsl and merged SSDT.dsl (according to http://www.lesswatts.org/projects/acpi/overridingDSDT.php) modified according to the last post 2) changed the name of _T_0 to TT_0 due to an error raised by iasl 3) compiled with "iasl -tc myDSDT.dsl" 4) compiled the kernel and installed 5) rebooted with acpi_no_auto_ssdt Nothing really changed. Attached the relevant files. Shall I merge in myDSDT also SSDT2-5?
Created attachment 26121 [details] DSDT+SSDT modified to force loading dynamic SSDTn log is obtained as: $ dmesg | grep ACPI > dmesg-ACPI.log
It looks like _PPC is being accessed before the SSDT that contains it is actually loaded. [ 1.356711] ACPI Error (psargs-0359): [\_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND [ 1.356723] ACPI Error (psparse-0537): Method parse/execution failed [\CPUL] (Node f7014ae0), AE_NOT_FOUND [ 1.356800] ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ01.OTHD] (Node f7014918), AE_NOT_FOUND [ 1.356879] ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ01._TMP] (Node f7014870), AE_NOT_FOUND [ 1.558233] ACPI: Power Button [PWRB] [ 1.558881] ACPI: Lid Switch [LID0] [ 1.558985] ACPI: Sleep Button [SLPB] [ 1.559109] ACPI: Power Button [PWRF] [ 5.904325] ACPI: AC Adapter [ACAD] (on-line) [ 5.912570] ACPI: Battery Slot [BAT0] (battery present) Dynamic table loads: [ 5.927188] ACPI: SSDT bba70e18 0019F (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 5.929040] ACPI: SSDT bba6f598 00537 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 5.932728] ACPI: SSDT bba70c18 001CF (v01 PmRef ApIst 00003000 INTL 20051117) [ 5.934392] ACPI: SSDT bba6ef18 0008D (v01 PmRef ApCst 00003000 INTL 20051117) [
Thanks Robert Just a couple of remarks: 1 - kernel 2.6.26 does not have such behaviour 2 - The DSDT recompiled with all SSDT inside, and booted with acpi_no_auto_ssdt only complains about the absence of the thermal threshold What should happen now? Shall I expect that the next kernel will manage the dynamic ssdts properly?
please re-open the bug report if it is not a duplicate of bug #14824 and the problem still exists in the latest kenrel release, say 2.6.34-rcX. *** This bug has been marked as a duplicate of bug 14824 ***