باگ عجیب پردازندههای AMD؛ لینوکس برای نجات وارد عمل شد

اگر از پردازندههای AMD استفاده میکنید، احتمالاً خبر دارید که دنیای سختافزار گاهی با باگهای عجیب و غریب دست و پنجه نرم میکند. اخیراً یک مشکل جدی در برخی پردازندههای سری Zen پیدا شده که مربوط به چیزی به اسم Erratum #1718 است. ماجرا از این قرار است که دستورات مربوط به Translation Lookaside Buffer یا همان TLB به درستی کار نمیکنند و باعث میشوند سیستم به جای اطلاعات جدید، از اطلاعات قدیمی و تاریخگذشته استفاده کند که نتیجهاش چیزی جز ناپایداری سیستم نیست.
خبر خوب این است که تیم توسعهدهنده لینوکس بیکار ننشسته و در نسخه Linux 7.3-rc7 یک راهکار نرمافزاری (Workaround) برای این مشکل در Kernel تعبیه کرده است. این یعنی حتی اگر هنوز Microcode پردازنده خود را آپدیت نکرده باشید، لینوکس با یک ترفند هوشمندانه جلوی این باگ را میگیرد.
چرا این باگ برای لینوکس مهم است؟
از اواخر سال ۲۰۲۴، لینوکس برای افزایش سرعت و کارایی در پاکسازی TLB، شروع به استفاده از دستورات INVLPGB در پردازندههای AMD کرد. اما مشکل اینجاست که اگر Microcode پردازنده قدیمی باشد، جفتدستور INVLPGB و TLBSYNC به درستی عمل نمیکنند و TLB به درستی Invalidate نمیشود.
راهکار جدید در Kernel چیست؟
توسعهدهندگان لینوکس در این آپدیت جدید، یک لایه حفاظتی اضافه کردهاند که به صورت نرمافزاری، اجرای دستور TLBSYNC را اجباری میکند. این کار باعث میشود حتی اگر Microcode شما قدیمی باشد، سیستم با اطمینان کامل و بدون خطا، ورودیهای TLB را پاکسازی کند و از بروز مشکلات بعدی جلوگیری شود.
این اصلاحیه نه تنها در نسخه 7.3-rc7 اعمال شده، بلکه قرار است به زودی برای نسخههای قدیمیتر Kernel که در دو سال اخیر منتشر شدهاند نیز Back-port شود تا همه کاربران از این امنیت بهرهمند شوند.
اگر از توزیعهای لینوکسی استفاده میکنید، حتماً منتظر آپدیتهای جدید Kernel باشید تا سیستمتان در برابر این باگ سختافزاری کاملاً ایمن شود.