Apa yang dilakukan parameter kernel acpi_osi = linux dan acpi_backlight = vendor?

21

Saya memiliki masalah dengan kontrol kecerahan layar di laptop saya dan saya memperbaikinya dengan menambahkan acpi_osi=linuxdan acpi_backlight=vendorparameter ke file grub.cfg. Saya ingin tahu apa arti parameter ini dan mengapa mereka bekerja.

pengguna91655
sumber

Jawaban:

28

Parameter kernel didokumentasikan di kernel.org .

Untuk memahami apa yang acpi_osidilakukan, Anda perlu mengetahui cara kerja ACPI. ACPI terdiri dari tabel yang disebut yang memuat BIOS ke dalam RAM sebelum sistem operasi dimulai. Beberapa dari mereka hanya berisi informasi tentang perangkat penting di mainboard dalam format tetap, tetapi beberapa seperti tabel DSDT berisi kode AML. Kode ini dieksekusi oleh sistem operasi dan menyediakan OS dengan struktur pohon yang menggambarkan banyak perangkat pada mainboard dan fungsi yang dapat dipanggil yang dijalankan oleh OS ketika misalnya penghematan daya diaktifkan. Kode AML dapat menanyakan OS OS apa itu dengan memanggil _OSIfungsi. Ini sering digunakan oleh vendor untuk membuat solusi misalnya sekitar bug di beberapa versi Windows.

Karena banyak vendor perangkat keras hanya menguji produk mereka dengan Windows versi terbaru (pada waktu itu), jalur kode "biasa" tanpa solusi sering buggy. Karena Linux ini biasanya menjawab ya ketika ditanya apakah itu Windows. Linux juga biasa menjawab ya ketika ditanya apakah itu "Linux", tetapi itu menyebabkan vendor BIOS mengatasi bug atau kehilangan fungsionalitas dalam (saat itu) versi kernel Linux terbaru alih-alih membuka laporan bug atau menyediakan tambalan. Ketika bug ini diperbaiki, penyelesaiannya menyebabkan hukuman kinerja yang tidak perlu dan masalah lainnya untuk semua versi Linux yang lebih baru.

acpi_osi=Linux membuat Linux menjawab ya lagi ketika ditanya apakah itu "Linux" oleh kode ACPI, sehingga memungkinkan kode ACPI untuk mengaktifkan solusi untuk Linux dan / atau menonaktifkan workarounds untuk Windows.

acpi_backlight=vendormengubah urutan pengandar ACPI untuk lampu latar diperiksa. Biasanya Linux akan menggunakan videodriver generik , ketika ACPI DSDT menyediakan perangkat backlight yang mengklaim kompatibilitas standar dan hanya akan memeriksa driver khusus vendor lain jika perangkat tersebut tidak ditemukan. acpi_backlight=vendormembalikkan urutan ini, sehingga driver khusus vendor dicoba terlebih dahulu.

cg909
sumber
3

Hasil Google pertama untuk "acpi_osi" menjelaskan acpi_osi=linux:

[...] BIOS biasanya menonaktifkan fungsionalitas jika Windows tidak terdeteksi [...] secara default kernel merespons false ketika ditanya apakah Linux sedang berjalan. acpi_osi=Linuxmemberitahu kernel untuk merespons true. (lihat drivers/acpi/osl.c) Tampaknya Anda perlu mengatakan yang sebenarnya kepada BIOS.

Hasil Google kedua untuk "acpi_osi" menjelaskan acpi_backlight=vendor:

acpi_backlight=vendorakan lebih memilih driver khusus vendor (mis thinkpad_acpi. sony_acpi, dll.) daripada video.kodriver ACPI .

Martin von Wittich
sumber
Saya berpendapat jawaban ini (terutama untuk acpi_osi) tidak cukup detalied.
Cadangan