What do the kernel parameters acpi_osi=linux and acpi_backlight=vendor do?

I had troubles with the screen brightness control in my laptop and I fixed it by adding the acpi_osi=linux and acpi_backlight=vendorparameters to the filegrub.cfg.
I’d like to know what these parameters mean and why they work.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

The kernel parameters are documented at kernel.org.

To understand what acpi_osi does, you roughly need to know how ACPI works.
ACPI consists of so-called tables that the BIOS loads into RAM before the operating system starts. Some of them simply contain information about essential devices on the mainboard in a fixed format, but some like the DSDT table contain AML code. This code is executed by the operating system and provides the OS with a tree structure describing many devices on the mainboard and callable functions that are executed by the OS when e.g. power saving is enabled. The AML code can ask the OS which OS it is by calling the _OSI function. This is often used by vendors to make workarounds e.g. around bugs in some Windows versions.

As many hardware vendors only test their products with the (at that time) latest version of Windows, the “regular” code paths without the workarounds are often buggy. Because of this Linux usually answers yes when asked if it’s Windows. Linux also used to answer yes when asked if it’s “Linux”, but that caused BIOS vendors to work around bugs or missing functionality in the (at that time) latest Linux kernel version instead of opening bug reports or providing patches. When these bugs were fixed the workarounds caused unnecessary performance penalities and other problems for all later Linux versions.

acpi_osi=Linux makes Linux answer yes again when asked if it’s “Linux” by the ACPI code, thus allowing the ACPI code to enable workarounds for Linux and/or disable workarounds for Windows.

acpi_backlight=vendor changes the order in which the ACPI drivers for backlights are checked. Usually Linux will use the generic video driver, when the ACPI DSDT provides a backlight device claiming standard compatibility and will only check other vendor specific drivers if such a device is not found. acpi_backlight=vendor reverses this order, so that the vendor specific drivers are tried first.

Method 2

The first Google result for “acpi_osi” explains acpi_osi=linux:

[…] BIOS’s usually disable functionality if Windows is not detected […]
by default the kernel responds
false when asked if Linux is running. acpi_osi=Linux tells the kernel
to respond true.(see drivers/acpi/osl.c) It seems that you need to
tell the BIOS the truth.

The second Google result for “acpi_osi” explains acpi_backlight=vendor:

acpi_backlight=vendor will prefer vendor specific driver (e.g. thinkpad_acpi, sony_acpi, etc.) instead of the ACPI video.ko driver.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments