كانت هناك الكثير من التقارير الأسبوع الماضي حول خطأ AMD's Bypass Translation Buffer (TLB) وتأثيره على شرائح Opteron رباعية النواة، وفقًا لتقارير وسائل الإعلام الأجنبية، تقوم AMD بإعداد نواة لنظام Red Hat Enterprise Linux 64 بت كترقية 4. بقع. على عكس إصلاحات BIOS (نظام الإدخال والإخراج الأساسي) وتحديثات الكود الصغير الخاصة بـ 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 من خلال حدث اكتشاف الجهاز. في هذه الحالة، ستكون حالة MC4 (MSR 0000_0410) هي محتوى سيكون سجل عنوان MC4 (MSR 0000_0412) 26 ساعة ".
وصف Wahlig كيفية عمل تصحيح Linux، والذي يتجاوز أيضًا مساحة عمل BIOS ويحاكي "البايتات التي تم الوصول إليها والقذرة" لمنع البيانات الخاطئة من إنشاء رؤوس الملفات:
يعتمد حل تصحيح kernel على السبب الجذري لمشكلة إخلاء ذاكرة التخزين المؤقت L2. يتم الكشف عن المشكلة فقط عندما يحتاج TLB إلى تعيين بت A أو D في إدخال جدول الصفحة. إذا لم يحتاج TLB أبدًا إلى تعيين بت A أو D، فلن يحدث الخطأ. من خلال محاكاة البتات A وD باستخدام البتات القابلة للكتابة حاليًا، سيضمن التصحيح أن البتات A وD الفعلية غالبًا ما يتم ضبطها مسبقًا. يتم تحقيق ذلك عن طريق فرض صفحة خطأ عند الوصول لأول مرة إلى صفحة لم يتم تعيين بت مضاهاة لها، وعندما يتم الوصول إلى صفحة قابلة للكتابة لأول مرة ولم يتم تعيين بت مضاهاة D لها. يتم تخزين البتات A وD المحاكاة في سجلات البت، والتي تكون متاحة عادةً لنظام التشغيل كمدخلات في جدول الصفحات.
توقفت AMD عن إصدار التصحيح في بيان أكثر لباقة مما كان متوقعًا في البداية، لكن الشركة لم تصدر "تصريح مرور" لجميع مستخدمي Linux لتجنب فقدان الأداء الناجم عن إصلاح BIOS.