Tampalan belum selesai melalui x86/urgent untuk menyelesaikan masalah dengan pemproses Intel Alder Lake dan Raptor Lake yang meninggalkan pembangun kernel buat masa ini untuk melumpuhkan Pengecam Konteks Proses (PCID) dengan pemproses mudah alih/desktop Intel ini.
Tampalan ditetapkan untuk disalurkan untuk pembangunan Linux 6.4 dan juga dialihkan kembali ke versi kernel yang stabil di sekeliling mengelak siram INVLPG global yang tidak lengkap. Tampalan daripada seorang jurutera Intel Linux menerangkan:
“Arahan INVLPG digunakan untuk membatalkan entri TLB untuk alamat maya yang ditentukan. Apabila PCID didayakan, INVLPG sepatutnya membatalkan entri TLB untuk alamat yang ditentukan untuk kedua-dua PCID semasa *dan* entri Global. (Nota: Hanya pemetaan kernel ditetapkan Global=1.)
Malangnya, sesetengah pelaksanaan INVLPG boleh membiarkan terjemahan Global tidak disiram apabila PCID didayakan.
Sebagai penyelesaian, jangan sekali-kali mendayakan PCID pada pemproses yang terjejas.
Saya jangkakan akhirnya terdapat pengurangan kod mikro untuk menggantikan penyelesaian perisian ini. Walau bagaimanapun, nombor versi tepat yang akan berlaku tidak diketahui hari ini. Setelah nombor versi ditetapkan dalam batu, senarai pemproses boleh diubah suai untuk hanya melumpuhkan PCID pada pemproses yang terjejas dengan mikrokod terjejas.
Nota: jika sesiapa mahukan pembaikan pantas yang tidak memerlukan tampalan, cuma lekatkan’nopcid’pada baris arahan kernel anda.”
Pemproses yang terjejas berakhir menjadi pemproses Intel Alder Lake dan Raptor Lake. Seperti yang dinyatakan dalam mesej tampalan, Intel dikatakan sedang mengusahakan pengurangan kod mikro untuk isu ini tetapi buat masa ini sekurang-kurangnya kernel Linux ditetapkan untuk melumpuhkan sokongan PCID untuk Alder Lake/Alder Lake L/Tasik Alder N/Tasik Raptor/Tasik Raptor P/Tasik Raptor S sehingga pengurangan kod mikro dapat dikendalikan.
INVLPG digunakan untuk membatalkan entri TLB yang ditentukan. Sekurang-kurangnya Tasik Alder dan Tasik Raptor tidak memerlukan Pengasingan Jadual Halaman Kernel (KPTI) untuk mengurangkan Meltdown kerana pemproses baharu ini tidak terjejas olehnya. Tetapi untuk pemproses Intel yang lebih lama, sokongan PCID membantu mengimbangi beberapa overhed dalam menangani Pengasingan Jadual Halaman Kernel/mengurangkan Meltdown seperti yang ditunjukkan beberapa tahun yang lalu. PTI kernel dokumentasi meneruskan dengan lebih terperinci manfaat sokongan PCID:
“Pengencam Konteks Proses (PCID) ialah ciri CPU yang membolehkan kami melangkau pembilasan keseluruhan TLB apabila menukar jadual halaman dengan menetapkan bit khas dalam CR3 apabila jadual halaman diubah. Ini menjadikan penukaran jadual halaman (pada suis konteks, atau kemasukan/keluar kernel) lebih murah. Tetapi, pada sistem dengan sokongan PCID, kod suis konteks mesti membuang kedua-dua entri pengguna dan kernel daripada TLB. Siram PCID TLB pengguna ditangguhkan sehingga keluar ke ruang pengguna, meminimumkan kos. Lihat intel.com/sdm untuk butiran PCID/INVPCID berdarah.
…
Pada sistem tanpa sokongan PCID, setiap tulisan CR3 mengepam seluruh TLB. Ini bermakna bahawa setiap syscall, sampukan atau pengecualian membuang TLB.”
Dalam apa jua keadaan saya akan menjalankan beberapa penanda aras di Raptor Lake untuk melihat sama ada ini–sekurang-kurangnya sementara–melumpuhkan sokongan PCID bermakna untuk mana-mana bidang prestasi biasa untuk pengguna akhir.