O que os parâmetros do kernel acpi_osi = linux e acpi_backlight = vendor fazem?

21

Eu tive problemas com o controle de brilho da tela no meu laptop e o corrigi adicionando os parâmetros acpi_osi=linuxe acpi_backlight=vendorao arquivo grub.cfg. Gostaria de saber o que esses parâmetros significam e por que eles funcionam.

user91655
fonte

Respostas:

28

Os parâmetros do kernel estão documentados em kernel.org .

Para entender o que acpi_osifaz, você precisa saber aproximadamente como a ACPI funciona. O ACPI consiste nas chamadas tabelas que o BIOS carrega na RAM antes do início do sistema operacional. Alguns deles simplesmente contêm informações sobre dispositivos essenciais na placa principal em um formato fixo, mas alguns como a tabela DSDT contêm código AML. Esse código é executado pelo sistema operacional e fornece ao sistema operacional uma estrutura em árvore que descreve muitos dispositivos na placa principal e funções que podem ser executadas pelo sistema operacional quando, por exemplo, a economia de energia está ativada. O código AML pode perguntar ao sistema operacional qual é o sistema operacional chamando a _OSIfunção. Isso geralmente é usado pelos fornecedores para fazer soluções alternativas, por exemplo, em torno de erros em algumas versões do Windows.

Como muitos fornecedores de hardware testam seus produtos apenas com a versão mais recente (naquele momento) do Windows, os caminhos de código "regulares" sem as soluções alternativas costumam ser bugs. Por causa disso, o Linux geralmente responde sim quando perguntado se é o Windows. O Linux também costumava responder sim quando perguntado se era "Linux", mas isso fazia com que os fornecedores de BIOS solucionassem bugs ou falhas de funcionalidade na (na época) versão mais recente do kernel Linux, em vez de abrir relatórios de bugs ou fornecer patches. Quando esses bugs foram corrigidos, as soluções alternativas causaram penalidades de desempenho desnecessárias e outros problemas para todas as versões posteriores do Linux.

acpi_osi=Linux faz com que o Linux responda sim novamente quando perguntado se é "Linux" pelo código ACPI, permitindo que o código ACPI ative soluções alternativas para Linux e / ou desative soluções alternativas para Windows.

acpi_backlight=vendoraltera a ordem na qual os drivers ACPI para retroiluminação são verificados. Geralmente, o Linux usa o videodriver genérico , quando o ACPI DSDT fornece um dispositivo de luz de fundo reivindicando compatibilidade padrão e só verifica outros drivers específicos do fornecedor se esse dispositivo não for encontrado. acpi_backlight=vendorreverte essa ordem, para que os drivers específicos do fornecedor sejam testados primeiro.

cg909
fonte
3

O primeiro resultado do Google para "acpi_osi" explica acpi_osi=linux:

Os BIOS normalmente desabilitam a funcionalidade se o Windows não for detectado [...] por padrão, o kernel responde falso quando perguntado se o Linux está em execução. acpi_osi=Linuxdiz ao kernel para responder como verdadeiro. (veja drivers/acpi/osl.c) Parece que você precisa dizer a verdade ao BIOS.

O segundo resultado do Google para "acpi_osi" explica acpi_backlight=vendor:

acpi_backlight=vendorvai preferir driver específico do fornecedor (por exemplo thinkpad_acpi, sony_acpi, etc.) em vez da ACPI video.komotorista.

Martin von Wittich
fonte
Eu argumentaria que essas respostas (especialmente para acpi_osi) não são detalhadas o suficiente.
Cestarian