Розробники дистрибутива Debian виявили проблеми в роботі режиму Hyper-threading в процесорах Intel, побудованих на базі мікроархітектури Skylake і Kaby Lake, які виражаються в непередбаченому поводженні системи (наприклад, аварійному завершенні застосунків або пошкодженні даних). Проблема проявляється в 6 і 7 поколінні процесорів Intel Core для настільних, вбудованих і мобільних систем, в серверних процесорах Xeon 5 і Xeon 6, а також в деяких моделях Intel Pentium.
Проблему виявили розробниками інструментарію OCaml, які зіткнулися з крахами при роботі компілятора OCaml, зібраного за допомогою GCC. Перші згадки проблеми відслідковуються з другого кварталу 2016 року, але через трудомісткості діагностики причина виявлена тільки зараз. Проблема проявляється тільки на деяких процесорах Intel з увімкненим режимом Hyper-threading. Подальше дослідження показало, що проблема викликана некоректною обробкою послідовностей інструкцій і є дефектом процесорів Intel Skylake і Kaby Lake.
Проблема проявляється, коли виконуються короткі цикли, що включають менше ніж 64 машинних інструкцій, які використовують регістри AH, BH, CH або DH, а також їх довші варіанти (RAX, EAX і AX для AH, RBX, EBX і BX для BH і т.д.), за умови, що активні обидва логічних процесора на тому ж фізичному процесорі. Розробники зв'язалися з Intel, але не отримали зрозумілої відповіді, при цьому через кілька місяців в списку змін в черговому оновленні від Intel було помічено виправлення, яке вирішувало проблему в OCaml. Розробники OCaml зв'язалися з супроводжуючими пакет intel-microcode в Debian і поділилися своєю інформацією.
Користувачам Debian з процесорами Intel Skylake (model в / proc / cpuinfo = 78 або 94 і stepping = 3) рекомендується якомога швидше встановити пакет intel-microcode з оновленням мікрокоду (версія 3.20170511.1), доступний в репозиторії non-free для гілок unstable, testing, Debian 9 «stretch» і Debian 8 (jessie-backports). Для інших моделей Intel Skylake і CPU Kaby Lake виправлення через intel-microcode поки недоступно, тому їм рекомендується дезактивувати режим роботи Hyper-threading в BIOS / UEFI або встановити оновлення прошивки BIOS / UEFI від виробника обладнання, якщо воно вже випущено (Intel erratа SKW144, SKL150, SKX150, SKZ7, KBL095, KBW095). Проблема не специфічна для Debian і Linux, і проявляється в будь-яких інших ОС.
Щоб визначити схильність системи до проблеми слід виконати grep name / proc / cpuinfo | sort -u і
і звірити модель процесора зі списками кодових номерів процесорів Skylake і Kaby-Lake, а також перевірити наявність підтримки Hyper-threading (флаг «ht» в / proc / cpuinfo).
$ grep -E 'model|stepping' /proc/cpuinfo | sort -u
model : 26
model name : Intel(R) Xeon(R) CPU E5530 @ 2.40GHz
stepping : 5
$ grep -q '^flags.*[[:space:]]ht[[:space:]]' /proc/cpuinfo && echo "Hyper-threading is supported"
Hyper-threading is supported
Ще немає коментарів