Pemuatan Mikrokode CPU AMD Di Linux Diperbaiki Menjadi Per-Utas

  • Post author:
  • Post category:Linux

Sampai saat ini memuat mikrokode CPU yang diperbarui pada prosesor AMD di Linux telah diperiksa hanya untuk memastikan setiap inti CPU fisik dimuat dengan mikrokode baru tetapi bukan utas saudara untuk prosesor SMT. Walaupun secara logika masuk akal, ternyata beberapa update microcode AMD memang melakukan modifikasi per-thread yang artinya update microcode perlu dilakukan di setiap thread. Perbaikan Linux sedang dalam perjalanan ke kernel untuk menyesuaikan perilaku itu.
Antri hari ini sebagai bagian dari cabang x86/mikrokode TIP adalah tambalan sehingga pemuatan mikrokode CPU AMD sekarang dicoba pada setiap utas logis daripada memeriksa untuk melihat pada tingkat inti CPU fisik bahwa pembaruan mikrokode dilakukan dan kemudian mengabaikan apa pun benang saudara dari setiap inti.
Pembaruan mikrokode

AMD yang berpotensi melakukan modifikasi per-utas ditemukan saat pengembang kernel sedang men-debug masalah. Sejak awal Juli ada laporan bug seputar instruksi “LWP” profil ringan yang hanya diekspos pada setengah dari inti/utas CPU untuk sistem AMD Bulldozer/Piledriver di Linux. Meskipun instruksi LWP jarang digunakan, ini dapat menimbulkan masalah saat mengkompilasi kode dengan “-march=native” dan kemudian menjalankan kode dan menemukan perilaku yang berbeda tergantung pada apakah eksekusi terjadi pada salah satu utas yang memiliki fitur CPU terbuka.
Situasi awalnya membingungkan pengembang kernel serta pengembang AMD Linux di utas tetapi kemudian penulis laporan bug menemukan perbedaan paparan fitur LWP ini disebabkan oleh mikrokode CPU. Kembali ketika AMD sedang mengerjakan mitigasi Spectre V2 mereka dan memperkenalkan IBPB (Indirect Branch Prediction Barrier) dalam mikrokode, mereka menjatuhkan LWP dari keluarga prosesor K8 dan K10 karena fitur tersebut jarang digunakan.
Ternyata ketika BIOS pada sistem AMD melakukan pembaruan mikrokode saat boot, itu dilakukan pada basis per-utas (dan mungkin juga untuk Windows). Tetapi di Linux, pembaruan mikrokode CPU AMD hanya diperiksa untuk basis per-inti fisik dan melewatkan pembaruan untuk utas saudara. Sekarang setidaknya dengan laporan bug LWP ini ada bukti modifikasi per-utas yang dilakukan. Mungkin juga pembaruan mikrokode CPU AMD lainnya telah melakukan modifikasi per-utas juga, tetapi tidak diperhatikan sampai perbedaan yang sangat jelas ini berasal dari penghapusan LWP yang diiklankan pada CPU AMD yang lebih lama.

Bagaimanapun, patch ini sekarang bekerja menuju kernel untuk melakukan pembaruan mikrokode dengan benar pada semua utas CPU AMD.

Itulah berita seputar Pemuatan Mikrokode CPU AMD Di Linux Diperbaiki Menjadi Per-Utas, semoga bermanfaat. Disadur dari Phoronix.com.