มีรายงานจำนวนมากเมื่อสัปดาห์ที่แล้วเกี่ยวกับข้อผิดพลาด Bypass Translation Buffer (TLB) ของ AMD และผลกระทบต่อชิป Quad-Core Opteron ตามรายงานของสื่อต่างประเทศ AMD กำลังเตรียมเคอร์เนลสำหรับ Red Hat Enterprise Linux 64 บิต เป็นการอัพเกรด 4. แพตช์ ต่างจากการแก้ไข BIOS (Basic Input Output System) ของ AMD และการอัพเดตไมโครโค้ด ซึ่งมีรายงานว่าลดประสิทธิภาพลง 10-20% กล่าวกันว่าแพตช์ Linux มีประสิทธิภาพลดลงน้อยกว่า 1% อย่างไรก็ตาม เรายังได้เรียนรู้ว่าผู้ใช้จะต้องลงนามในข้อตกลงไม่เปิดเผยข้อมูลเพื่อรับแพทช์
หลังจากยืนยันสถานการณ์แล้ว AMD ได้เปิดเผยซอร์สโค้ดของแพทช์ในรายการส่งเมล x86-64.org อย่างไรก็ตาม รหัสนี้ขึ้นอยู่กับสถานการณ์ปัจจุบัน และจะไม่ได้รับการแก้ไข โดยมีคำเตือนอีกประการหนึ่งว่าไม่เหมาะสำหรับระบบกระแสหลักอย่างสมบูรณ์:
เนื่องจากลักษณะการบุกรุกที่ทรงพลังของแพตช์นี้และมีผู้ใช้จำนวนน้อยมากที่ได้รับผลกระทบ (คุณจะรู้สิ่งนี้หากส่วนหนึ่งของระบบของคุณได้รับผลกระทบ) เราไม่แนะนำให้ใช้แพตช์นี้บนระบบ Linux ทั่วไป แพตช์นี้ไม่ได้มีไว้สำหรับผู้ใช้ทั่วไป และไม่ใช่ผลิตภัณฑ์ Linux ที่มีวางจำหน่าย! โปรแกรมปรับปรุงนี้ผ่านการทดสอบการทำงานเพียงเล็กน้อย ผู้ใช้แต่ละคนจะต้องประเมินก่อนใช้งานเพื่อให้แน่ใจว่าเป็นไปตามมาตรฐานคุณภาพที่จำเป็น
ในโพสต์ที่เผยแพร่ก่อนหน้านี้ในรายชื่อผู้รับจดหมายเดียวกัน พนักงานของ AMD Elsie Wahlig ยังเตือนด้วยว่าแพตช์นี้ "ไม่แนะนำสำหรับผลิตภัณฑ์อัปสตรีม" Wahlig กล่าวว่าแพตช์ดังกล่าวได้รับการพัฒนาโดยกลุ่มศูนย์วิจัยระบบปฏิบัติการของ AMD สำหรับ Linux 2.6.23.8 และให้คำอธิบายโดยละเอียดเกี่ยวกับข้อผิดพลาด:
คำอธิบายของข้อผิดพลาด 298 มีดังนี้: "การดำเนินการของโปรเซสเซอร์อาจไม่ใช่อะตอมมิก โดยเปลี่ยนไบต์ที่เข้าถึงหรือสกปรกในรายการตารางการแปลหน้าจากที่อยู่ 0b เป็น 1b ในแคชระดับที่สอง ภายในช่วงเวลาสั้น ๆ การดำเนินการแคชอื่น ๆ อาจทำให้รายการตารางการแปลเพจไม่ถูกต้องถูกติดตั้งในแคช L3 ก่อนที่ข้อมูลที่จำลองแบบแล้วจะถูกส่งกลับไปยังแคช L2 นอกจากนี้ หากตรวจพบบรรทัดแคชในช่วงเวลานี้ ตัวประมวลผลจะไม่ดำเนินการแคชที่ไม่เกี่ยวข้องกับการเข้าถึงหรือ ไบต์สกปรกและข้อมูลที่อาจมีข้อผิดพลาด ระบบอาจรายงานข้อผิดพลาดของโปรโตคอลแคชระดับ 3 ผ่านเหตุการณ์การตรวจจับเครื่อง ในกรณีนี้ สถานะของรีจิสเตอร์ (MSR 0000_0410) จะเป็น B2000000_000B0C0F หรือ BA000000_000B0C0F การลงทะเบียนที่อยู่ MC4 (MSR 0000_0412) จะเป็น 26 ชั่วโมง "
Wahlig อธิบายวิธีการทำงานของแพทช์ Linux ซึ่งข้ามพื้นที่ทำงานของ BIOS และจำลอง "ไบต์ที่เข้าถึงและสกปรก" เพื่อป้องกันข้อมูลที่ผิดพลาดจากการสร้างส่วนหัวของไฟล์:
วิธีแก้ปัญหาเคอร์เนลแพตช์ขึ้นอยู่กับสาเหตุหลักของปัญหาการขับไล่แคช L2 ปัญหาจะถูกเปิดเผยเฉพาะเมื่อ TLB ต้องการตั้งค่าบิต A หรือ D ในรายการตารางเพจ หาก TLB ไม่จำเป็นต้องตั้งค่าบิต A หรือ D ข้อผิดพลาดจะไม่เกิดขึ้น ด้วยการจำลองบิต A และ D โดยใช้บิตที่สามารถเขียนได้ในปัจจุบัน แพตช์จะทำให้แน่ใจว่าบิต A และ D จริงมักจะถูกตั้งค่าไว้ล่วงหน้า ซึ่งทำได้โดยการบังคับให้มีหน้าแสดงข้อผิดพลาดเมื่อมีการเข้าถึงเพจเป็นครั้งแรกโดยไม่ได้ตั้งค่าบิตการจำลอง A และเมื่อเพจที่เขียนได้มีการเข้าถึงการเขียนครั้งแรกโดยไม่ได้ตั้งค่าบิตการจำลอง D บิต A และ D จำลองจะถูกจัดเก็บไว้ในบิตรีจิสเตอร์ ซึ่งโดยปกติจะมีให้ในระบบปฏิบัติการเป็นรายการตารางหน้า
AMD หยุดออกแพตช์ด้วยแถลงการณ์ที่มีไหวพริบมากกว่าที่คาดไว้ในตอนแรก แต่บริษัทไม่ได้ออก "พาส" ให้กับผู้ใช้ Linux ทุกคน เพื่อหลีกเลี่ยงการสูญเสียประสิทธิภาพที่เกิดจากการแก้ไข BIOS