Mittlerweile habe ich mich an die DSDT gewagt. Erstellen der dazu notwendigen DSDT.aml wie folgt (zu der Zeit hatte ich noch Ubuntu 8.04; jetzt bin ich bei SuSE 11):
Code:
sudo acpidump -t DSDT -o dsdt.dat -b
iasl -d dsdt.dat
ergab folgende Meldungen:
Intel ACPI Component Architecture
AML Disassembler version 20061109 [May 16 2007]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
Loading Acpi table from file dsdt.dat
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
.........................................................................................................................................................................................
Parsing completed
Disassembly completed, written to "dsdt.dsl"
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 16 2007]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.dsl 2346: Method (STM, 0, Serialized)
Warning 1086 - ^ Not all control paths return a value (STM_)
dsdt.dsl 2919: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)
ASL Input: dsdt.dsl - 3004 lines, 104022 bytes, 1234 keywords
AML Output: dsdt.aml - 10315 bytes 414 named objects 820 executable opcodes
Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 344 Optimizations
Für die zweite Warnung gab es im Internet diesen Vorschlag:
Return(Package(0x02){0x00, 0x00})
Aus Plausibilitätsgründen habe ich ihn auch für die erste Warnung verwendet. Die Anweisung wurde jeweils unmittelbar vor der letzten schließenden Klammer der betreffenden Methode eingefügt. Ein erneuter Compilerdurchlauf war dann einwandfrei:
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 16 2007]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
ASL Input: dsdt.dsl - 3007 lines, 104127 bytes, 1236 keywords
AML Output: dsdt.aml - 10327 bytes 414 named objects 822 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 348 Optimizations
Ich habe mutigerweise für
die bestehende initrd verändert.
Beim Booten ergab ein Auszug aus dmesg für den vorherigen Zustand:
ACPI: Checking initramfs for custom DSDT
Parsing all Control Methods:
Table [DSDT](id 0001) - 419 Objects with 36 Devices 106 Methods 26 Regions
tbxface-0598 [00] tb_load_namespace : ACPI Tables successfully acquired
Mit der veränderten DSDT ergab sich:
ACPI: Checking initramfs for custom DSDT
ACPI: Found DSDT in DSDT.aml.
ACPI: Override [DSDT- VIA_K7], this is unsafe: tainting kernel
ACPI: Table DSDT replaced by host OS
ACPI: DSDT 00000000, 2857 (r1 VIA VIA_K7 1000 INTL 20061109)
ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt"Parsing all Control Methods:
Table [DSDT](id 0001) - 419 Objects with 36 Devices 106 Methods 26 Regions
tbxface-0598 [00] tb_load_namespace : ACPI Tables successfully acquired
Leider schaltete sich Susie auch nach dieser Modifikation beim herunterfahren nicht ab.
Wie angedeutet hatte ich schon unter Ubuntu 8.04 diese DSDT für die initrd verwendet. Dabei tauchte beim selben Bootvorgang dreimal die Meldung "Checking Batterie-Status" oder so auf. Außerdem startete die grafische Oberfläche mit reduzierter Auflösung; deshalb hatte ich erst heute unter Susie den Test gewagt, der erfreulicherweise ohne solch seltsamen Effekte ablief.
Es bleibt herauszufinden, ob die Modifikation der DSDT in beiden Fällen durch den richtigen Eintrag erfolgte, oder was ich sonst noch unternehmen könnte - abgesehen vom Kauf eines anderen Motherboards...