
توسعهدهندگان کرنل لینوکس راهکاری نرمافزاری را برای دور زدن خطای سختافزاری موسوم به AMD TLBI Erratum #1718 به هسته لینوکس افزودهاند. این نقص پیشتر از طریق بهروزرسانی میکروکد (Microcode) پردازنده برطرف شده بود، اما اکنون برای سیستمهایی که روی پردازندههای آسیبپذیر AMD اجرا میشوند و میکروکد بهروزشده را در اختیار ندارند، یک راهکار در سطح کرنل ارائه شده است.
خطای TLBI شماره ۱۷۱۸ چیست و چه پیامدی دارد؟
بر اساس این گزارش، پردازندههای تحت تأثیر این باگ ممکن است هنگام اجرای جفت دستور INVLPGB / TLBSYNC روی نسخههای قدیمیتر میکروکد، در بیاعتبارسازی (Invalidate) یک ورودی از بافر ترجمه آدرس (Translation Lookaside Buffer یا به اختصار TLB) دچار خطا شوند. این وضعیت میتواند به باقیماندن ورودیهای ترجمه کهنه (Stale Translation Entries) منجر شود.
چرا این موضوع برای عملکرد کرنل اهمیت دارد؟
از اواخر سال ۲۰۲۴ میلادی، کرنل لینوکس برای پاکسازی TLB در سطح کرنل از دستور AMD INVLPGB استفاده میکند تا عملکرد سیستم بهبود یابد؛ موضوعی که در بنچمارکهای پیشین نیز به آن اشاره شده بود. حالا با وارد شدن کد جدید به شاخه اصلی (Mainline)، یک راهکار نرمافزاری برای اجبار به اجرای TLBSYNC به کار گرفته میشود تا در صورت عدم رفع مشکل از طریق میکروکد، بیاعتبارسازی ورودیهای TLB بهدرستی انجام شود.
زمانبندی انتشار و بازگردانی به نسخههای پیشین
- این کد امروز و همراه با کرنل لینوکس ۷.۳-rc7 منتشر میشود.
- تنها اصلاح موجود در درخواست ادغام (Pull Request) رفع اشکال x86 در این نسخه، همین مورد است.
- این وصله در روزهای آینده به نسخههای پیشین کرنل (Back-port) بازگردانی خواهد شد.
- بازگردانی برای شاخههای پشتیبانیشده کرنل در دو سال گذشته انجام میگیرد.
به این ترتیب، کاربرانی که روی سختافزارهای آسیبپذیر AMD از نسخههای قدیمیتر کرنل استفاده میکنند نیز در آینده نزدیک به این اصلاح دسترسی خواهند داشت.