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.
What do the kernel parameters acpi_osi=linux and acpi_backlight=vendor do?
linux;linux kernel;grub;acpi
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.