I had troubles with the screen brightness control in my laptop and I fixed it by adding the
acpi_backlight=vendorparameters to the file
I'd like to know what these parameters mean and why they work.
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.
The first Google result for "acpi_osi" explains
[...] BIOS's usually disable functionality if Windows is not detected [...] by default the kernel responds false when asked if Linux is running.
acpi_osi=Linuxtells 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=vendorwill prefer vendor specific driver (e.g.
sony_acpi, etc.) instead of the ACPI