Что делают параметры ядра acpi_osi = linux и acpi_backlight = vendor?

21

Я имел проблемы с контролем яркости экрана в моем ноутбуке , и я установил его, добавив acpi_osi=linuxи acpi_backlight=vendorпараметры в файл grub.cfg. Я хотел бы знать, что означают эти параметры и почему они работают.

user91655
источник

Ответы:

28

Параметры ядра документированы на kernel.org .

Чтобы понять, что acpi_osiделает, вам нужно примерно знать, как работает ACPI. ACPI состоит из так называемых таблиц, которые BIOS загружает в ОЗУ до запуска операционной системы. Некоторые из них просто содержат информацию об основных устройствах на материнской плате в фиксированном формате, но некоторые, например, таблица DSDT, содержат код AML. Этот код выполняется операционной системой и предоставляет ОС древовидную структуру, описывающую множество устройств на материнской плате, и вызываемые функции, которые выполняются ОС, например, когда включено энергосбережение. Код AML может спросить ОС, какая это ОС, вызвав _OSIфункцию. Это часто используется поставщиками, чтобы обойти, например, ошибки в некоторых версиях Windows.

Поскольку многие производители оборудования тестируют свои продукты только с (в то время) последней версией Windows, «обычные» пути кода без обходных путей часто содержат ошибки. Из-за этого Linux обычно отвечает «да» на вопрос, является ли это Windows. Linux также обычно отвечал «да», когда его спрашивали, «Linux» ли это, но это заставляло производителей BIOS работать с ошибками или отсутствующими функциями в (в то время) последней версии ядра Linux вместо открытия отчетов об ошибках или предоставления исправлений. Когда эти ошибки были исправлены, обходные пути вызывали ненужные потери производительности и другие проблемы для всех более поздних версий Linux.

acpi_osi=Linux заставляет Linux отвечать «да» снова, когда его спрашивают, является ли он «Linux» кодом ACPI, что позволяет коду ACPI включать обходные пути для Linux и / или отключать обходные пути для Windows.

acpi_backlight=vendorизменяет порядок проверки драйверов ACPI для подсветки. Обычно Linux использует общий videoдрайвер, когда ACPI DSDT предоставляет устройство подсветки, требующее стандартной совместимости, и проверяет драйверы других поставщиков, только если такое устройство не найдено. acpi_backlight=vendorотменяет этот порядок, так что драйверы, специфичные для поставщика, пробуются первыми.

cg909
источник
3

Первый результат Google для "acpi_osi" объясняет acpi_osi=linux:

[...] BIOS обычно отключают функциональность, если Windows не обнаруживается [...] по умолчанию ядро ​​отвечает false, когда его спрашивают, работает ли Linux. acpi_osi=Linuxговорит ядру, что оно отвечает true. (см. drivers/acpi/osl.c) Кажется, вам нужно сказать BIOS правду.

Второй результат Google для "acpi_osi" объясняет acpi_backlight=vendor:

acpi_backlight=vendorпредпочтет драйвер конкретного производителя (например thinkpad_acpi, sony_acpiи т. д.) вместо video.koдрайвера ACPI .

Мартин фон Виттих
источник
Я бы сказал, что эти ответы (особенно для acpi_osi) недостаточно детализированы.
Cestarian