unofficial ASUS Notebook Forum
10. Jan 2009

Forum Suche Forum Übersicht Anmerkung: registrierte Benutzer können sich über neue Einträge benachrichtigen lassen Anmerkung: registrierte Benutzer können sich über neue Einträge benachrichtigen lassen

zum vorhergehenden Thema Thema drucken zum nächsten Thema

Übersicht ::  ASUS Mobile Computing ::  Linux ::  HOWTO: Reparieren der DSDT
moderiert von: Moderatoren

gehe zu Seite : 1 | 2 | 3 | 4 | 5 | 6 | 7 nächste Seite
Zum aktuellsten Beitrag 

HOWTO: Reparieren der DSDT

graviton verfasst: 15.05.2004, 15:56
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
Das Reparieren der Differentiated System Descriptor Table (DSDT) der ASUS M6N Serie- oder so klappts auch mit dem Akkufuellstand icon_cool

Warum sollte ich selbst reparieren? Weil die DSDT fuer unterschiedliche Biosversionen, Speicheraustattungen und CPU's unterschiedlich ist. Nimmt man also eine DSDT von einem Geraet das eine kleinere CPU eingebaut hat als man selbst so kann es passieren das das Speedsteppen verhindert das man seine CPU auf volle Geschwindigkeit bringen kann. Um Overclocker schonmal alle Hoffnung zu nehmen, umgekehrt gehts leider nicht, das verhindert die Hardware schon:)

Die Infos hier gibts an verschiedenen Quellen im Netz nachzulesen, das ist hier also mehr eine Kurz-How-To-Summary:

1. Notebook mit unveraenderter DSDT booten. Als "root" anmelden und mittels "cat /proc/acpi/dsdt > dsdt" die aktuelle DSDT sichern.
2. Den Intel ASL Compiler/Disassembler runterladen und entpacken: http://developer.intel.com/technology/iapc/acpi/downloads/iasl-linux-20030918.tar.gz
3. Mittels "iasl -d dsdt" die zuvor gesicherte dsdt disassemblieren.
4a. Nun muss die disassemblierte dsdt.dsl per Hand repariert werden(oder unter 4b automatisch fuer die ungeduldigen):
- Der erste Fehler der den Intel ASL Compiler verwirrt befindet sich in den Zeilen 1535,1536,1543: "IO" muss in diesen Zeilen durch "IO_" ersetzt werden. Vermutlich ein BUG im Compiler.
- In den Zeilen 4936, 4945, 4954, 5432, 5443 muessen die If (SS#) {} jeweils mit Klammerung geloescht werden. Die Name () deklarationen muessen stehen bleiben.
- In der Zeile 645 wurde ein EndDependentFn () vergessen. Den /*** */ Kommentar durch "EndDependentFn ()" ersetzen.
- In den Zeilen 2699 und 2960 wurden jeweils am Ende der Methode "BST0" ein "Return (Local0)" vergessen. Einfach einfuegen.
4b. Um diesen Schritt zu beschleunigen hab ich ein diff bereit gestellt, einfach mittels patch -i dsdt.diff dsdt.dsl einspielen.
5. Das wars schon fast. Die geaenderte dsdt.dsl sichern und mittels "iasl -tc -oa dsdt.dsl" compilieren. Die entstandene dsdt.hex oder dsdt.aml wie gewohnt in den Kernel bzw. Initrd patchen.

Mit dieser Methode koennen unter Verwendungen eines aktuellen Kernels (2.6.5) und des ecdt-Patches alle ACPI Fehler behoben werden.

EDIT: Es soll besser sein diesen cst_support Patch einzuspielen als die Prozessor Block Length zu veraendern. Man hat zwar einen Fehler im Kernellog das die PBLK-length falsch ist, aber der C2 Modus soll laufen, wodurch man mehr Strom spart. Ich selbst hab keine Aenderung festgestellt :) Hab die Anleitung und Patches trotzdem upgedated.

PS.: Mit etwas Glueck wird ab Kernelversion 2.6.9 die Geschichte mit dem hinzufuegen des vergessenen "Return (Local0)" ueberfluessig. Damit muesste es _mit etwas Gueck_ komplett ueberfluessig sein die dsdt zu patchen.
Vermutlich wird man zwar noch die anderen Patches (ecdt, cst_support) einspielen muessen, aber die betreffen dann nur noch den Linux Kernel und nicht das ACPI-Bios icon_smile Das duerfte einiges vereinfachen...

EDIT@ 02.Sept04: Wir haben vermutlich ein Problem mit der DSDT gefunden, welche das gelegentliche Versagen der Lueftersteuerung erklaert. Ob der Bug jetzt ursaechlich innerhalb der Linux-Acpi Implementierung oder wahrscheinlich eher im Bios zu finden ist(da das Problem auch unter Windows besteht) bleibt erstmal offen. Die Ursache des Versagens der Lueftersteuerung ist ein Nebenlaeufigkeitsproblem, welches sich am einfachsten beheben laesst, in dem man saemtliche "NotSerialized" Anweisungen durch "Serialized" Anweisungen ersetzt. Es ist vielleicht nicht ganz sauber, und Nebeneffekte koennen natuerlich auftreten, aber ein Luefterversagen welches auftreten kann wenn man nicht patched kann evtl. schlimmere Folgen haben...
EDIT@ 10.Sept04: Alternativ gibt es die Kerneloption "acpi_serialize", welche die gleiche Funktion hat, nur leider funktioniert sie erst ab Kernel >= 2.6.9
EDIT@ 19.Feb05: Das 213er Bios behebt den acpi_serialize Bug
EITT@ 23.Mar05: Seit 2.6.11 kann man sich den ecdt patch sparen (gut konnte man vorher auch), einfach acpi_fake_ecdt als weiteren boot Parameter mit uebergeben.
EDIT@ 31.Mar05: Juhu, seit Bios 214A/208A ist die Batterieanzeige gefixed icon_smile Damit ist Linux dann ohne Patches voll-featured icon_smile

editiert von: graviton, 31.03.2005, 13:12 Uhr


:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
Svlad verfasst: 15.05.2004, 18:12
Senior Member
Senior Member


registriert: Jan. 2004
Beiträge: 154

Status: offline
letzter Besuch: 04.02.06
Wunderbar. Das hat sehr geholfen.

Könntest Du vielleicht noch sagen, welche BIOS Version Du hast und wie die Methoden heißen, bei denen das Return(Local0) vergessen wurde? Die finde ich in meiner DSDT Tabelle nämlich nicht.

Vielleicht würde es auch helfen den Diff im Unified Format zu erstellen.

PS: Habe jetzt nach dem Kompilieren gesehen, daß man die Stellen aus den Fehlermeldungen ableiten kann.

editiert von: Svlad, 15.05.2004, 18:21 Uhr
Nach oben  Profil PM senden
 
graviton verfasst: 15.05.2004, 20:20
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
Ok, ist jetzt unified diff und Methodenname war BAT0. Bios Version ist 207, bei 206 waren es die selben Probleme.


:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
Svlad verfasst: 15.05.2004, 20:27
Senior Member
Senior Member


registriert: Jan. 2004
Beiträge: 154

Status: offline
letzter Besuch: 04.02.06
Hmmm...
Die hießen bei mir anders.
Vielleicht sollte ich wirklich mal ein aktuelles BIOS einspielen. Habe immer noch die originale Version drauf.
Nach oben  Profil PM senden
 
graviton verfasst: 15.05.2004, 20:56
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
ups BST0 meinte ich; wie kommt ich BAT icon_confused War wohl freudscher verschreiber icon_biggrin


:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
Svlad verfasst: 15.05.2004, 21:21
Senior Member
Senior Member


registriert: Jan. 2004
Beiträge: 154

Status: offline
letzter Besuch: 04.02.06
Ahhh...
Dann kann ich das Update ja doch noch was aufschieben. icon_wink


editiert von: Svlad, 15.05.2004, 21:21 Uhr
Nach oben  Profil PM senden
 
Svlad verfasst: 16.05.2004, 20:13
Senior Member
Senior Member


registriert: Jan. 2004
Beiträge: 154

Status: offline
letzter Besuch: 04.02.06
Hi.

Ich habe jetzt die DSDT Tabelle eingespielt, aber wenn ich mir bei eingelegtem Akku /proc/acpi/battery/BAT0/state ausgeben lasse, kommt nur:
Zitat
present: yes
ERROR: Unable to read battery status


/proc/acpi/battery/BAT0/info zeigt:
Zitat
present: yes
design capacity: 4300 mAh
last full capacity: 4300 mAh
battery technology: rechargeable
design voltage: 14800 mV
design capacity warning: 130 mAh
design capacity low: 21 mAh
capacity granularity 1: 52 mAh
capacity granularity 2: 2418 mAh
model number: M6N
serial number: 00001
battery type: LIon
OEM info: ASUSTek


Jemand eine Idee was das sein könnte?
Nach oben  Profil PM senden
 
graviton verfasst: 16.05.2004, 21:39
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
2.6.5er kernel oder hoeher? Bei Kernelversion vor 2.6.5 hatte der ASL Parser im Kernel ein BUG; da musste man noch Alias Definitionen rausschmeissen:

Alias (\_SB.PCI0.SBRG.EC0.DPRT, DPRT) und aehnliche mussten entfernt werden und dann jeweils ueberall wo DPRT in der DSL steht \_SB.PCI0.SBRG.EC0.DPRT eingetragen werden. Entsprechend fuer andere Alias Definitionen...

Ansonsten einfach mal die ganzen ACPI Fehlermeldungen in dmesg durchgehen...


:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
Svlad verfasst: 17.05.2004, 07:47
Senior Member
Senior Member


registriert: Jan. 2004
Beiträge: 154

Status: offline
letzter Besuch: 04.02.06
Ich habe den 2.6.5er von SuSE drauf.
Seltsam ist allerdings, daß der Kernel erst meldet er hätte keine Custom DSDT gefunden und nachdem alles initialisiert ist, meldet er hätte eine reingeladen. Vielleicht liegt da ja schon der Hund begraben.
Nach oben  Profil PM senden
 
upD8R verfasst: 26.05.2004, 09:24
Senior Member
Senior Member
upD8R

registriert: Mär. 2004
Beiträge: 266

Status: offline
letzter Besuch: 17.08.06
@graviton

Nachdem ich jetzt auch beim Punkt ACPI/dsdt angekommen bin , habe ich doch noch mal ein paar Fragen: Woher weißt Du, was Du ändern musst? Benutze einen 2.6.6er Kernel und habe noch das 206A-Bios drauf.

Wie bekomme ich die geänderte dsdt zurück ins System?

Gruß, Mario
Nach oben  Profil PM senden Webseite
 
graviton verfasst: 26.05.2004, 10:50
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
das mit den aendern ergibt sich aus den Fehlermeldungen des intel-asl-compilers :) Ansonsten war es gluecklicherweise recht naheliegend was gefixt werden musste, anhand der acpi Fehlermeldungen die der Kernel ausgespuckt hat.

Bei den unterschiedlichen Bios Versionen hat sich leider nicht viel getan, soll heissen die DSDT's enthielten jeweils immer die gleichen Bugs, wenn es nicht sogar immer die gleichen DSDT's waren.

Ansonsten hatten Kernelversionen < 2.6.5 einen BUG gehabt, der die Asus DSDT betraf, da Du nen aktuellen 2.6.6er hast ist, betrifft Dich das aber nicht :)

Die geaenderte DSDT kriegst Du entweder mittels [URL=http://gaugusch.at/kernel.shtml]initrd patch[/URL] oder einkompiliert durch aendern der drivers/acpi/osl.c




:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
upD8R verfasst: 26.05.2004, 11:14
Senior Member
Senior Member
upD8R

registriert: Mär. 2004
Beiträge: 266

Status: offline
letzter Besuch: 17.08.06
Dank Dir,

dann habe ich ja heute abend was zu tun icon_wink

Gruß, Mario
Nach oben  Profil PM senden Webseite
 
upD8R verfasst: 27.05.2004, 06:46
Senior Member
Senior Member
upD8R

registriert: Mär. 2004
Beiträge: 266

Status: offline
letzter Besuch: 17.08.06
@graviton

Danke für Deine Tipps. Ich konnte die dsdt ändern, obwohl ich nicht so richtig wusste. was ich da eigentlich mache icon_biggrin
Nachdem alles fertig war, habe ich natürlich prompt ein neues BIOS (208A) raufgespielt und werde also heute nochmal patchen icon_rolleyes

Eine Frage bleibt - obwohl z.B. Akkustand angezeigt wird, erhalte ich beim Booten immer noch folgende Fehlermeldung:
Code
  1. ACPI: Using customized DSDT
  2.     ACPI-0299: *** Info: Table [DSDT] replaced by host OS
  3. ACPI: IRQ9 SCI: Level Trigger.
  4.     ACPI-1133: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.ACS_] (Node dff28e60), AE_NOT_EXIST
  5.     ACPI-1133: *** Error: Method execution failed [\_SB_.AC__._INI] (Node dff28980), AE_NOT_EXIST
  6.     ACPI-1133: *** Error: Method execution failed [\_SB_.PCI0.SBRG.EC0_.BATS] (Node dff28e40), AE_NOT_EXIST
  7.     ACPI-1133: *** Error: Method execution failed [\_SB_.BAT0._STA] (Node c146f9c0), AE_NOT_EXIST
  8.     ACPI-0154: *** Error: Method execution failed [\_SB_.BAT0._STA] (Node c146f9c0), AE_NOT_EXIST


Noch was: wie kann ich aktuelle CPU-Frequenz auslesen und was hat es mit den verschiedenen Profilen im KLaptop (perforamnce, powersave, userspace) auf sich? Wo kann ich deren Parameter sehen?

Danke + Gruß,
Mario
Nach oben  Profil PM senden Webseite
 
graviton verfasst: 27.05.2004, 19:51
ASUS fanatic
ASUS fanatic
graviton

registriert: Feb. 2004
Beiträge: 661

Status: offline
letzter Besuch: 06.05.08
-CPU Frequenz gibts mit cat /proc/cpuinfo

-KLaptop kenn ich nicht, aber ich vermute das Performance=Vollen Takt, Powersave=Min. Takt, Userspace=Dynamisch je nach Last

-ich vermute das die verbleibenden Fehler mit fehlenden ecdt patch zusammenhaengen:

http://www.tzi.de/~adieling/asusm6n-acpi/ecdt-2.6.6.patch

Der Patch soll irgendwelche Initialisierungen von irgendwelche embedded Controllern vorziehen oder so aehnlich, genau hab ich es auch nicht verstanden, aber er funktioniert also wird es schon passen icon_smile


:: Ey Amigos, hoert mal ein bischen zu, koennte wichtig sein! ::
-
** M6800N ** 1.5GHz ** DVD/CD-RW ** 1 Gig Infineon ** Gentoo Linux **
Nach oben  Profil PM senden Webseite
 
d-lirium verfasst: 07.07.2004, 17:10
gerade reingestolpert
gerade reingestolpert


registriert: Jul. 2004
Beiträge: 2

Status: offline
letzter Besuch: 07.07.04
Hallo,

Beim durchführen der oben gennanten Anleitung erhalte ich folgenden Output:

Aspiration:/proc/acpi # /home/d-lirium/programs/iasl-linux-20030918/iasl -dc dsdt

Intel ACPI Component Architecture
ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003]
Copyright (C) 2000 - 2003 Intel Corporation
Supports ACPI Specification Revision 2.0b

Loading Acpi table from file dsdt
Could not install table, AE_TABLE_NOT_SUPPORTED

Kann mir jemand wieterhelfen?
Nach oben  Profil PM senden
 
gehe zu Seite : 1 | 2 | 3 | 4 | 5 | 6 | 7 nächste Seite


Zur Teilnahme an der Diskussion bitte anmelden.

Powered by pnForum Version 2.6

Wer ist Online

Mitglieder: 4915
Gäste online: 0
Mitglieder online: 0

Anmeldung

Forum Stats


12 aktuellste Beiträge:

Gesamtstatistik:
  • Themen: 5783
  • Beiträge: 43406

 

Anmeldung





 


Asus Notebooks