bios acpi dsdt

bios: basic input/output system
acpi: advanced configuration power interface
dsdt: differentiated system description table
wheezy32: debian wheezy 32bit
arch32: arch 32bit

toshiba bios seem to be one of the most notorious and worst broken. do not choose toshiba for anything but windows, and even with that be careful. dodgy bios implementations are like broken foundations to build your home, if you want to live there yourself!

identify

so how do you identify, if your bios is broken/buggy? check kernel logs:
$ dmesg -l err
toshiba_acpi: Error reading LCD brightness
indicates direction of problems. this error points towards a buggy implementation of acpi by toshiba.

$ dmesg | grep DSDT
ACPI: DSDT 0x00000000B7CEF000 095BA (v01 TOSINV TOSINV00 00000001 MSFT 01000013)
TOSHIBA Satellite detected - force copy of DSDT to local memory
ACPI: Forced DSDT copy: length 0x095BA copied locally, original unmapped
ACPI: EC: Look up EC in DSDT
indicates that bios data is (used as original, forced) not overidden.
msft indicates that toshiba bios is specific to microsoft, particular to a windows version.
poor strategy, unless they were paid-off by microsoft.

confirm

how do you confirm whether bios provided data is usable? decompile & recompile.
a successful recompile, no errors/warnings indicates a good bios! and this has nothing to do with any operating system.

we need iasl, for this purpose.

$ apt-cache show iasl
Description: Intel ASL compiler/decompiler
 iASL compiles ASL (ACPI Source Language) into AML (ACPI Machine
 Language). This AML is suitable for inclusion as a DSDT in system
 firmware. It also can disassemble AML, for debugging purposes.
Homepage: http://acpica.org
# apt-get install iasl
$ iasl -h

$ cd /tmp
$ sudo cat /sys/firmware/acpi/tables/DSDT >dsdt.dat
$ iasl -d dsdt.dat
$ iasl -tc dsdt.dsl
the first command reads the dsdt data. do it as root.
the second command decompiles this .dat into .dsl
the third command attempts to compile, thereby generating the errors/warnings we are looking for.

i see this on wheezy32
$ iasl -tc dsdt.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20100528 [Jul  2 2010]
Copyright (c) 2000 - 2010 Intel Corporation
Supports ACPI Specification Revision 4.0a

dsdt.dsl  3401:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

dsdt.dsl  3408:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

dsdt.dsl  7148:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7165:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7214:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7231:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7275:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7489:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7506:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7523:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7540:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7557:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  8873:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  8873:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9033:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9033:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9101:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9101:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9174:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9174:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9334:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9334:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9402:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9402:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9507:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9507:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9667:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9667:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9735:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9735:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9808:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9808:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9968:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9968:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl 10036:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl 10036:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

ASL Input:  dsdt.dsl - 10111 lines, 370896 bytes, 4450 keywords
Compilation complete. 12 Errors, 24 Warnings, 0 Remarks, 37 Optimizations

12 errors, 24 warnings, i.e. not good!
i get the same results on arch32 too.. so don't go blaming wheezy32!

No comments:

Post a Comment

most popular posts