Разработчики дистрибутива 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 c процессорами 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



Источник: http://www.opennet.ru/opennews/art.shtml?num=46762