Ada banyak laporan minggu lalu tentang bug Bypass Translation Buffer (TLB) AMD dan dampaknya pada chip Opteron quad-core, Menurut laporan media asing, AMD sedang mempersiapkan kernel untuk Red Hat Enterprise Linux 64-bit, yang dikenal sebagai Peningkatan 4. Patch. Berbeda dengan perbaikan BIOS (Basic Input Output System) AMD dan pembaruan mikrokode, yang dilaporkan mengurangi kinerja sebesar 10-20%, patch Linux dikatakan mengalami penurunan kinerja kurang dari 1%. Namun, kami juga mengetahui bahwa pengguna harus menandatangani perjanjian kerahasiaan untuk mendapatkan patch tersebut.
Setelah situasi tersebut dikonfirmasi, AMD merilis kode sumber patch tersebut di milis x86-64.org. Namun, kode ini didasarkan pada situasi saat ini dan tidak akan diubah, dengan peringatan lain bahwa kode ini tidak sepenuhnya cocok untuk sistem arus utama:
Karena sifat intrusif yang kuat dari patch ini dan jumlah pengguna yang terpengaruh sangat sedikit (Anda akan mengetahui hal ini jika ada bagian dari sistem Anda yang terpengaruh), kami tidak menyarankan penggunaan patch ini pada sistem Linux biasa. Patch ini tidak ditujukan untuk pengguna umum, juga bukan produk Linux untuk dijual! Patch ini telah menjalani pengujian fungsional minimal. Setiap pengguna harus mengevaluasinya sebelum digunakan untuk memastikan bahwa itu memenuhi standar kualitas yang diperlukan.
Dalam postingan yang diterbitkan sebelumnya di milis yang sama, karyawan AMD Elsie Wahlig juga memperingatkan bahwa patch tersebut "tidak direkomendasikan untuk produk upstream." Wahlig menyebutkan bahwa patch tersebut dikembangkan oleh grup Pusat Penelitian Sistem Operasi AMD untuk Linux 2.6.23.8 dan memberikan penjelasan rinci tentang kesalahan tersebut:
Deskripsi kesalahan 298 adalah sebagai berikut: "Operasi prosesor mungkin tidak atomik, mengubah byte yang diakses atau kotor dalam entri tabel terjemahan halaman dari alamat 0b ke 1b di cache tingkat kedua. Dalam interval waktu yang kecil, operasi cache lainnya dapat menyebabkan entri tabel terjemahan halaman yang tidak valid dipasang di cache L3 sebelum data replikasi yang dimodifikasi dikembalikan ke cache L2. Selain itu, jika baris cache terdeteksi selama interval ini, prosesor tidak akan melakukan operasi cache yang tidak terkait pada yang diakses atau byte kotor, dan mungkin data yang salah. Sistem dapat melaporkan kesalahan protokol cache Level 3 melalui peristiwa deteksi mesin. Dalam hal ini, status MC4. Isi register (MSR 0000_0410) adalah B2000000_000B0C0F register alamat MC4 (MSR 0000_0412) akan menjadi 26 jam.
Wahlig menjelaskan cara kerja patch Linux, yang juga melewati ruang kerja BIOS dan mengemulasi "byte yang diakses dan kotor" untuk mencegah data yang salah membuat header file:
Solusi patch kernel bergantung pada akar penyebab masalah penggusuran cache L2. Masalahnya hanya terungkap ketika TLB perlu mengatur bit A atau D dalam entri tabel halaman. Jika TLB tidak perlu menyetel bit A atau D, kesalahan tidak akan terjadi. Dengan meniru bit A dan D menggunakan bit yang saat ini dapat ditulis, patch akan memastikan bahwa bit A dan D yang sebenarnya sering kali telah disetel sebelumnya. Hal ini dicapai dengan memaksa halaman kesalahan ketika halaman pertama kali diakses yang emulasi bit A-nya tidak disetel, dan ketika halaman yang dapat ditulisi pertama kali diakses tulis yang bit emulasi D-nya tidak disetel. Bit A dan D yang disimulasikan disimpan dalam register bit, yang biasanya tersedia untuk sistem operasi sebagai entri tabel halaman.
AMD berhenti mengeluarkan patch dalam pernyataan yang lebih bijaksana dari perkiraan awal, namun perusahaan tidak mengeluarkan "pass" untuk semua pengguna Linux untuk menghindari hilangnya kinerja yang disebabkan oleh perbaikan BIOS.