Forum Linux.debian/ubuntu ACPI : modifier la table DSDT

Posté par  .
Étiquettes :
0
3
mai
2005
J'essaie de compiler l'outil pour assembler/désassembler la table DSDT selon les instructions http://gentoo-wiki.com/HOWTO_Fix_Common_ACPI_Problems(...) et http://linuxfr.org/tips/263.html(...) pour mon portable Acer Aspire 1694WLMi (Bios version S3C25) qui tourne à plein régime tout le temps, donc j'aimerais bien que le speedstep et autres ventilateurs/thermomètres soient gérés. Je suis en Ubuntu 5.04 (Hoary)

Malheureusement ça commence mal:

root@aspiro:/home/djax/acpi # cd acpica-unix-20050309/compiler/
root@aspiro:/home/djax/acpi/acpica-unix-20050309/compiler # make
bison -v -d -y -pAslCompiler aslcompiler.y
conflits: 57 décalage/réduction, 50 réduction/réduction
aslcompiler.y:916.7-81: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: TermArg: Type2IntegerOpcode
aslcompiler.y:917.7-81: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: TermArg: Type2StringOpcode
aslcompiler.y:918.7-81: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: TermArg: Type2BufferOpcode
aslcompiler.y:919.7-81: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: TermArg: Type2BufferOrStringOpcode
aslcompiler.y:961.7-82: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: OptionalParameterTypePackage: ','
aslcompiler.y:984.7-82: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: OptionalParameterTypesPackage: ','
aslcompiler.y:1575.7-38: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: CaseTermList: CaseTerm
aslcompiler.y:1584.7-38: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: DefaultTermList: CaseTerm
aslcompiler.y:3075.37-48: AVERTISSEMENT: la règle n'a jamais fait de réduction en raison des conflits: OptionalResourceType: /* vide */
cp y.tab.c aslcompilerparse.c
cp y.tab.h aslcompiler.y.h
cc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include -c -o aslcompilerparse.o aslcompilerparse.c
flex -i -PAslCompiler -oaslcompilerlex.c aslcompiler.l
cc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include -c -o aslcompilerlex.o aslcompilerlex.c
aslcompiler.l: Dans la fonction « comment »:
aslcompiler.l:847: error: `yytext_ptr' undeclared (first use in this function)
aslcompiler.l:847: error: (Each undeclared identifier is reported only once
aslcompiler.l:847: error: for each function it appears in.)
make: *** [aslcompilerlex.o] Erreur 1
root@aspiro:/home/djax/acpi/acpica-unix-20050309/compiler #bison --version
bison (GNU Bison) 1.875d
Écrit par Robert Corbett et Richard Stallman.

Copyright © 2004 Free Software Foundation, Inc.
Ce logiciel est libre; voir les sources pour les conditions de
reproduction. AUCUNE garantie n'est donnée; tant pour des raisons
COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.
root@aspiro:/home/djax/acpi/acpica-unix-20050309/compiler # flex --version
flex 2.5.31


Bon sur un forum Ubuntu en espagnol (http://www.ubuntu-es.org/node/3028)(...) dont je ne parle pas un traitre mot:
Lo siguiente que se necesita es un compilador/decompilador raro de intel llamado iasl.
Para bajarse las fuentes, hay que ir a:
http://developer.intel.com/technology/iapc/acpi/downloads.htm(...)
Habrá que compilar, que no es muy dificil.
Hace falta flex, y creo que bison. Eso sí, tuve problemas con el paquete flex de ubuntu (demasiado nuevo??) y tuve que instalar el paquete flex-old, también en los repositorios, para poder compilarlo.


En installant flex-old (flex version 2.5.4), ça compile jusqu'au bout et produit l'exécutable iasl. Bison fait toujours de AVERTISSEMENTs, mais je ne sais pas si ça porte à conséquence.

A noter que la seconde partie n'est pas gagnée, n'ayant pas
/proc/acpi/dsdt. L'option au boot acpi=off pour pouvoir booter ne doit pas aider.
  • # kernel

    Posté par  . Évalué à 2.

    avant de commencer à se casser la tete avec les dsdt, t'as quoi comme kernel sur ta hoary actuellement ?
    (désolé,je connais pas le kernel par défaut sur cette distrib)
    • [^] # Re: kernel

      Posté par  . Évalué à 1.

      J'ai le kernel 2.6.10-5-686-smp qui est livré avec le paquet linux-image-686-smp.

      La version 2.6.11.1 est disponible mais je ne sais pas pourquoi le paquet générique ne le propose pas.

      J'ai pris la version smp pour que toute la RAM soit reconnue (1Go en SMP). Je n'ai pas mis la dernière version de noyau, car j'attend qu'Ubuntu sorte la version du driver fglrx 8.12.

      J'utilse le driver ATI pour l'instant.

      Quelqu'un a créé un asl pour le portable Acer-Aspire 1691WLmi S3C11:http://acpi.sourceforge.net/dsdt/tables/ACER/Aspire_1691WLMi/(...)
      Ce portable est de la même gamme et devrait être assez semblable au mien, mise à part la quantité de RAM livrée, la carte graphique (qui peut varier entre une mobility X600 ou mobility X700), la vitesse du CPU et la version de BIOS.

      J'espère pouvoir comparer ma version originale avec la sienne et voir si je peux appliquer les même modif.
      • [^] # Re: kernel

        Posté par  . Évalué à 2.

        rapport avec ton giga de ram et le smp ?

        aucun d'après moi hein ;)
        smp signifie symetric multi processing, autrement dit multi-processeur con bete et méchant.
        soit aucun rapport avec la ram...

        à moins que ton aspire ait déja un processeur bi-core, soit un P4 hyperthreadé, auquel cas l'explication à fournir n'est pas en rapport avec la ram ;)


        (à moins que quelqu'un vienne m'expliquer pourquoi il faut un kernel multiproc pour pouvoir utiliser son giga de ram...)
        • [^] # Re: kernel

          Posté par  . Évalué à 1.

          Le rapport avec le smp, c'est que pour la version SMP, le noyau est compilé avec l'option BigMem (de 1 à 4 Go en tout cas), alors que la version non smp ne va pas jusqu'au Giga (ce qui est un tord car ça devient gentiment standard).

          Bref si tu n'as pas envie de compiler ton noyau tout de suite, mais que tu veux que ta RAM soit reconnue, la version SMP est une solution de secours.
      • [^] # Re: kernel et modules?

        Posté par  . Évalué à 1.

        Est ce que tu as les modules de l'ACPI et du Speedstep de charger. Je sais c'est con comme idee, mais chez moi ils n'etaient pas charges avant de les mettres ds /etc/modules.

        $sudo modprobe thermal battery button processor(...)
  • # Sans rapport avec la choucroute ...

    Posté par  . Évalué à 1.

    Tu es en hoary. Quel langue utilises-tu ?
    Parceque ma hoary est en français, c'est cool mais j'ai un peu de mal avec les messages gcc en français :)
    Or je vois que tes messages de compilation sont en anglais. As-tu fait quelque chose de spécial ?

    A+
    • [^] # Re: Sans rapport avec la choucroute ...

      Posté par  . Évalué à 1.

      gcc n'a rien généré de très parlant, c'est flex qui semble avoir généré de l'anglais, et encore, pas en totalié. Mon $ locale
      LANG=fr_CH.UTF-8
      LC_CTYPE="fr_CH.UTF-8"
      LC_NUMERIC="fr_CH.UTF-8"
      LC_TIME="fr_CH.UTF-8"
      LC_COLLATE="fr_CH.UTF-8"
      LC_MONETARY="fr_CH.UTF-8"
      LC_MESSAGES="fr_CH.UTF-8"
      LC_PAPER="fr_CH.UTF-8"
      LC_NAME="fr_CH.UTF-8"
      LC_ADDRESS="fr_CH.UTF-8"
      LC_TELEPHONE="fr_CH.UTF-8"
      LC_MEASUREMENT="fr_CH.UTF-8"
      LC_IDENTIFICATION="fr_CH.UTF-8"
      LC_ALL=


      Est-ce que LC_MESSAGES="en_EN.UTF-8" ne ferait pas ton affaire?
  • # Gros hack de la mort...

    Posté par  . Évalué à 2.


    cc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include -c -o aslcompilerlex.o aslcompilerlex.c

    aslcompiler.l: Dans la fonction « comment »:

    aslcompiler.l:847: error: `yytext_ptr' undeclared (first use in this function)

    aslcompiler.l:847: error: (Each undeclared identifier is reported only once

    aslcompiler.l:847: error: for each function it appears in.)



    J'ai eu la même erreur que toi. Pour passer au travers, j'ai édité le
    fichier aslcompilerlex.c, en ajoutant #define yytext_ptr AslCompilertext
    au dessus de la ligne "unput(c1);" (il n'y en a qu'une dans le code).

    Ensuite j'ai dumpé ma DSDT, que j'ai ensuite désassemblée avec le
    iasl généré juste avant:


    cat /proc/acpi/dsdt > dsdt.dat
    ./iasl -d dsdt.dat


    Bon apparemment ma DSDT est bugguée (compilée avec le
    compilateur MS d'après le dmesg) et je ne peux pas la recompiler
    directement:


    ./iasl -tc dsdt.dsl

    Intel ACPI Component Architecture
    ASL Optimizing Compiler / AML Disassembler version 20050309 [May 3 2005]
    Copyright (C) 2000 - 2005 Intel Corporation
    Supports ACPI Specification Revision 3.0

    dsdt.dsl 315: Method (\_WAK, 1, NotSerialized)
    Warning 2026 - ^ Reserved method must return a value (_WAK)

    dsdt.dsl 343: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 349: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 4569: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 4574: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    ASL Input: dsdt.dsl - 4856 lines, 148894 bytes, 1886 keywords
    Compilation complete. 4 Errors, 1 Warnings, 0 Remarks, 563 Optimizations


    Donc apparemment le compilo semble marcher avec ce hack.
    • [^] # Re: Gros hack de la mort...

      Posté par  . Évalué à 1.

      Le downgrade semble avoir marché aussi:

      acpica-unix-20050309/compiler/iasl -tc dsdt.dsl

      Intel ACPI Component Architecture
      ASL Optimizing Compiler / AML Disassembler version 20050309 [May 3 2005]
      Copyright (C) 2000 - 2005 Intel Corporation
      Supports ACPI Specification Revision 3.0

      dsdt.dsl 450: Or (CFGD, 0xC0, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 450: Or (CFGD, 0xC0, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 470: And (CFGD, 0x3F, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 470: And (CFGD, 0x3F, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 584: If (LEqual (And (PDC0, 0x0A), 0x0A))
      Error 1022 - Object does not exist ^ (PDC0)

      dsdt.dsl 589: If (LEqual (And (PDC1, 0x0A), 0x0A))
      Error 1021 - ^ Object not accessible from this scope (PDC1)

      dsdt.dsl 1918: Method (DRUL, 1, NotSerialized)
      Warning 2019 - ^ Not all control paths return a value (DRUL)

      dsdt.dsl 2565: Method (_DCK, 1, NotSerialized)
      Warning 2019 - ^ Not all control paths return a value (_DCK)

      dsdt.dsl 2565: Method (_DCK, 1, NotSerialized)
      Warning 2026 - ^ Reserved method must return a value (_DCK)

      dsdt.dsl 2620: And (CFGD, 0x3F, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 2620: And (CFGD, 0x3F, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 2629: Or (CFGD, 0xC0, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 2629: Or (CFGD, 0xC0, CFGD)
      Error 1022 - Object does not exist ^ (CFGD)

      dsdt.dsl 6362: Z00C,
      Error 1022 - ^ Object does not exist (Z00C)

      dsdt.dsl 6363: Z00C,
      Error 1022 - ^ Object does not exist (Z00C)

      dsdt.dsl 6619: Z00C,
      Error 1022 - ^ Object does not exist (Z00C)

      dsdt.dsl 6620: Z00C,
      Error 1022 - ^ Object does not exist (Z00C)

      ASL Input: dsdt.dsl - 6939 lines, 244012 bytes, 3200 keywords
      Compilation complete. 14 Errors, 3 Warnings, 0 Remarks, 1114 Optimizations


      Reste plus qu'à débugger. Est-ce que si je mettais à jour mon noyau à 2.6.11, ça changerait quelque chose?
      • [^] # Re: Gros hack de la mort...

        Posté par  . Évalué à 2.

        Le passage à 2.6.11 ne change pas le contenu de la DSDT.

        Le patch pour débuger ma DSDT (des fois que quelqu'un en aurait besoin):
        diff -u dsdt.20050509.original.dsl dsdt.20050509.custom.dsl

        --- dsdt.20050509.original.dsl 2005-05-09 17:27:11.000000000 +0200
        +++ dsdt.20050509.custom.dsl 2005-05-16 16:54:58.000000000 +0200
        @@ -209,6 +209,7 @@
        Name (\CTYP, 0x00)
        Name (\L01C, 0x00)
        Name (\INSX, 0x00)
        + External (CFGD) // ADD BY DJAX
        Method (\_PIC, 1, NotSerialized)
        {
        Store (Arg0, GPIC)
        @@ -581,12 +582,12 @@
        {
        If (HTTE)
        {
        - If (LEqual (And (PDC0, 0x0A), 0x0A))
        + If (LEqual (And (\_SB.PCI0.RP01.PDC0, 0x0A), 0x0A))
        {
        Notify (\_PR.CPU0, 0x80)
        }

        - If (LEqual (And (PDC1, 0x0A), 0x0A))
        + If (LEqual (And (\_SB.PCI0.RP01.PDC1, 0x0A), 0x0A))
        {
        Notify (\_PR.CPU1, 0x80)
        }
        @@ -1942,6 +1943,10 @@
        Return (0x00)
        }
        }
        + ELSE
        + {
        + Return (0x00) // Remove Warning
        + }
        }

        Method (USTA, 0, NotSerialized)
        @@ -2301,7 +2306,7 @@
        {
        Offset (0x1A),
        ABP1, 1,
        - , 2,
        + PDC0, 2,
        PDC1, 1,
        , 2,
        PDS1, 1,
        @@ -2572,6 +2577,7 @@
        {
        Store (0x00, \_SB.PCI0.RP03.Z002)
        Store (0x01, \_SB.PCI0.RP03.LDP3)
        + Return (0x00) // ADD BY DJAX
        }
        }

        @@ -6359,8 +6365,8 @@
        Name (PBST, Package (0x04)
        {
        0x00,
        - Z00C,
        - Z00C,
        + Z008,//was Z00C,
        + Z008,//was Z00C,
        0x2710
        })
        Name (ERRC, 0x00)
        @@ -6616,8 +6622,8 @@
        Name (PBST, Package (0x04)
        {
        0x00,
        - Z00C,
        - Z00C,
        + Z008,//was Z00C,
        + Z008,//was Z00C,
        0x2710
        })
        Name (ERRC, 0x00)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.