Beleza, pessoal?
Segundo o site acpi.sourceforge.net, DSDT significa Differentiated System Description Table, o que no português deve ser algo parecido com Tabela Diferenciada de Descrição de Sistema. Esta tabela contém o Bloco de Definição Diferenciada, que se encarrega de fornecer a informação e configuração a respeito da base do sistema. Essas informações e configurações são sempre inseridas ao ACPI durante o carregamento do Sistema Operacional. Infelizmente, muitos fabricantes e redistribuidores de hardware não são capazes de fornecer essas tabelas de forma adequada, 100% funcionais (nem mesmo são membros da ACPI SIG). Por isso existe a necessidade de PATCHES para essas tabelas, desenvolvidas por nós, simples usuários curiosos e com tempo sobrando, e por desenvolvedores profissionais.
Eu tenho um netbook Samsung Go (N310) que aparentemente roda bem qualquer sistema operacional, mas nem tudo são flores. O DSDT original não me atrapalhava, mas como forma de aprendizado corrigi os dois únicos erros do DSDT e as mensagens de erros e incosistências sumiram do processo de boot do Debian =)
Passo 1 - Instale o ACPI Source Language compiler/decompiler conhecido iasl
aptitude install iasl
Passo 2 - Extraia o dsdt original com o comando cat /proc/acpi/dsdt > ~/dsdt.dat
iasl -d dsdt.dat
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 1375: 0x00000000, // Length
Error 4122 - ^ Invalid combination of Length and Min/Max fixed flags
dsdt.dsl 1382: 0x00000000, // Length
Error 4122 - ^ Invalid combination of Length and Min/Max fixed flags
ASL Input: dsdt.dsl - 5184 lines, 169320 bytes, 1819 keywords
Compilation complete. 2 Errors, 0 Warnings, 0 Remarks, 692 Optimizations
Passo 6 - Abra o dsdt.dsl pelo editor de texto de sua preferência e vá até a linha referenciada pelo compilador.
Linha 1375
0x00000000, // Range Minimum
0xFEBFFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00000000, // Length
,, _Y0E, AddressRangeMemory, TypeStatic)
Passo 7 - Agora vem a correção: Va no google, e subtraia o Range Maximun pelo Range Minimum + 1, ou seja,
O resultado é 0xFEC00000
Pegue o resultado e coloque em Length. Ficará assim:
0x00000000, // Granularity
0x00000000, // Range Minimum
0xFEBFFFFF, // Range Maximum
0x00000000, // Translation Offset
0xFEC00000, // Length
,, _Y0E, AddressRangeMemory, TypeStatic)
Fontes:
http://acpi.sourceforge.net/dsdt/index.phphttp://ohioloco.ubuntuforums.org/showthread.php?t=1036051&page=52
http://ubuntuforums.org/showthread.php?t=1036051
http://wiki.debian.org/OverridingDSDT
Antes de mais nada, parabéns pelo post! Estou usando Linux 2.6.37.6 , distro Slackware64. É necessário eu baixar o acpica (compilador asl da intel: acpica.org) para editar dsdt ?
ResponderExcluirObrigado meu caro!
ResponderExcluirÉ muito bom saber que as dicas contidas nesse blog estão servindo para ajudar e tirar dúvidas. Fico feliz com isso.
De fato você vai precisar de um compilador/descompilador para transformar o "binário" em um arquivo fonte, depois compilar novamente apenas para verificar as mensagens de erro, e então editar o arquivo fonte através de um editor de texto de sua preferência para fazer as devidas modificações. Compile novamente para verificar os possiveis erros até chegar ao resultado desejado.
o IASL é exatamente o compilador da INTEL, que, até onde eu sei, segue os padrões estabelecidos pelo orgão responsável.
Você vai precisar baixa-lo para poder fazer o processo descrito acima.
No link abaixo tem uma outra abordagem sobre o tema; um pequeno post que talvez sirva tambem para ajudar.
http://goo.gl/Z0Rae
Qualquer duvida pode entrar em contato. Seja bem-vindo ao blog.
Forte abraço!!
Depois de eu ter instalado o acpica, como eu posso atualizá-lo pra uma versao mais recente ? É so baixar a versao e instalar os pacotes que os antigos irão ser sobrescritos ?
ResponderExcluirCom certeza. Como você utiliza SLACKWARE provavelmente terá que compilar o acpica direto da fonte.
ResponderExcluirQuando sair a versão mais nova basta compilar e mandar instalar por cima mesmo.
A não ser que na documentação haja alguma outra recomendação...
Abraços!!