Sebuah tambalan tertunda melalui x86/mendesak untuk mengatasi masalah dengan prosesor Intel Alder Lake dan Raptor Lake yang membuat pengembang kernel untuk sementara waktu menonaktifkan Process Context Identifiers (PCID) dengan prosesor seluler/desktop Intel ini.
Sebuah tambalan diatur untuk mainline untuk pengembangan Linux 6.4 dan juga di-porting ke versi kernel yang stabil untuk menghindari flush INVLPG global yang tidak lengkap. Tambalan dari seorang insinyur Intel Linux menjelaskan:
"Instruksi INVLPG digunakan untuk membatalkan entri TLB untuk alamat virtual yang ditentukan. Ketika PCID diaktifkan, INVLPG seharusnya membatalkan entri TLB untuk alamat yang ditentukan untuk entri PCID * dan * Global saat ini. (Catatan: Hanya pemetaan kernel yang ditetapkan Global=1.)
Sayangnya, beberapa implementasi INVLPG dapat membuat terjemahan Global tidak terhapus saat PCID diaktifkan.
Sebagai solusinya, jangan pernah mengaktifkan PCID pada prosesor yang terpengaruh.
Saya berharap pada akhirnya akan ada mitigasi kode mikro untuk menggantikan solusi perangkat lunak ini. Namun, nomor versi pasti di mana hal itu akan terjadi tidak diketahui hari ini. Setelah nomor versi ditetapkan, daftar prosesor dapat diubah untuk hanya menonaktifkan PCID pada prosesor yang terpengaruh dengan kode mikro yang terpengaruh.
Catatan: jika ada yang menginginkan perbaikan cepat yang tidak memerlukan penambalan, cukup tempelkan `nopcid` pada baris perintah kernel Anda."Prosesor yang terpengaruh adalah prosesor Intel Alder Lake dan Raptor Lake. Seperti disebutkan dalam pesan tambalan, Intel dikatakan bekerja pada mitigasi mikrokode untuk masalah ini tetapi untuk saat ini setidaknya kernel Linux diatur untuk menonaktifkan dukungan PCID untuk Alder Lake / Alder Lake L / Alder Lake N / Raptor Lake / Raptor Lake P / Raptor Lake S sampai mitigasi mikrokode dapat ditangani.
INVLPG digunakan untuk membatalkan entri TLB yang ditentukan. Setidaknya Alder Lake dan Raptor Lake tidak memerlukan Kernel Page Table Isolation (KPTI) untuk memitigasi Meltdown karena prosesor yang lebih baru ini tidak terpengaruh olehnya. Tetapi untuk prosesor Intel yang lebih lama, dukungan PCID membantu mengimbangi beberapa biaya tambahan dalam menangani Isolasi Tabel Halaman Kernel / mengurangi Meltdown seperti yang ditunjukkan beberapa tahun yang lalu. Dokumentasi kernel PTI terus mencatat manfaat dukungan PCID secara lebih luas:
"Process Context Identifiers (PCID) adalah fitur CPU yang memungkinkan kita melewatkan pembilasan seluruh TLB saat berpindah tabel halaman dengan menyetel bit khusus di CR3 saat tabel halaman diubah. Hal ini membuat peralihan tabel halaman (pada sakelar konteks, atau kernel masuk/keluar) lebih murah. Namun, pada sistem dengan dukungan PCID, kode pengalih konteks harus menghapus entri pengguna dan kernel dari TLB. Penyiraman PCID TLB pengguna ditangguhkan hingga keluar ke ruang pengguna, meminimalkan biaya. Lihat intel.com/sdm untuk rincian PCID/INVPCID berdarah.
...
Pada sistem tanpa dukungan PCID, setiap penulisan CR3 menghapus seluruh TLB. Itu berarti bahwa setiap syscall, interupsi, atau pengecualian mem-flush TLB. kinerja untuk pengguna akhir.
Itulah berita seputar Linux Menonaktifkan PCID Untuk Intel Alder Lake & Raptor Lake Karena Masalah Dengan INVLPG, semoga bermanfaat. Disadur dari Phoronix.com.Artikel Diperbarui pada: May 21, 2023
Kontributor: Syauqi Wiryahasana
Model: Haifa Manik Intani