Intel Microcode Celeron M ULV 353 - обновился или нет?

Добрый день!

Установил intel-ucode, сгенерировал новый конфиг grub, добавил модуль cpuid в загрузку, но микрокод почему то не обновляется:

[root@sokryt edinoverie]# dmesg | grep microcode
[    0.657994] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    2.335896] microcode: sig=0x6d8, pf=0x20, revision=0x20
[    2.336086] microcode: Microcode Update Driver: v2.2.

При этом что, говорит, что микрокод должен быть обновлён до ревизии 18

[root@sokryt edinoverie]# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
iucode_tool: system has processor(s) with signature 0x000006d8
microcode bundle 1: (stdin)
selected microcodes:
  001/047: sig 0x000006d6, pf_mask 0x20, 2004-10-17, rev 0x0018, size 2048

Подскажите пожалуйста, в чём может быть проблема?
vladimirov_georgij
в чём может быть проблема?
Проблема в неправильной расшифровке вывода.
Вот зачем используешь команду bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - ??? - для любопытства или для понимания?
Если для понимания, то нужно внимательно читать вывод, полученный этой командоой и правильно его интерпретировать.
А лучше вообще не лезти в эти дебри.
Ошибки не исчезают с опытом - они просто умнеют
Покажи выводы: # dmidecode | grep -i 'signature', а лучше (не зная, что за BIOS) grep -E 'family|model|stepping' -m 4 /proc/cpuinfo

EDIT 1 - выводы нужны для уточнения processor signature, хотя уверен, что вывод будет следующий
cpu family    : 6
model           : 13
stepping        : 8
а значит processor_signature=06-0d-08, а sig=0x006d8
Если посмотреть последнию версию firmware microcode (20190312), то там отсутствут обновление микрокода для сигнатуры 06-0d-08
ls ~/Документы/Firmware/microcode/intel_microcode/intel-ucode | grep 06-0d
06-06-0d
06-0d-06
Но есть обновление микрокода для сигнатуры 06-0d-06, о чем также и сообщает вывод
vladimirov_georgij
001/047: sig 0x000006d6, pf_mask 0x20, 2004-10-17, rev 0x0018, size 2048
железный мозг не нашел 06-0d-08 и сообщает о похожем 06-0d-06.
То есть это то, о чем я писал, нужно внимательно смотреть вывод глупой машины и делать анализ.
Обновление микрокода требует строгой идентификации и если что то не совпадет, то обновление не произойдет.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Вот зачем используешь команду bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - ??? - для любопытства или для понимания?

Использую это так как это указано в вики арча - для проверки что есть подходящий для моего процессора код. Получается, раз он выводит одну строчку, значит, для моего процессора есть один подходящий микрокод. Разве нет?

Извлекает образ микрокода и ищет в нём ваш cpuid:
# bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS -
Если обновление доступно, оно должно отобразиться под selected microcodes

Вывод dmidecode:

[root@sokryt ~]# dmidecode | grep -i 'signature'
        Signature: Type 0, Family 6, Model 13, Stepping 8

Вывод /proc/cpuinfo:

[root@sokryt edinoverie]# grep -E 'family|model|stepping' -m 4 /proc/cpuinfo
cpu family      : 6
model           : 13
model name      : Intel(R) Celeron(R) M processor          900MHz
stepping        : 8

vasek, большое спасибо тебе за толковое объяснение. Таким образом, "похожее" обновление микрокода 06-0d-06 не является подходящим?
vladimirov_georgij
Таким образом, "похожее" обновление микрокода 06-0d-06 не является подходящим?
Оно вообще не является обновлением для данного cpu, имеющего sig=0x006d8, просто железяка не нашла нужного обновления и выбрала наиболее подходящее (для cpu, имеющего sig=0x006d6), но система идентификации перед обновлением четко отслеживает все неточности и если замечает несоответствия, то ничего и не обновляется.
Для понимания процесса обновления просто нужно один раз выполнить обновление в ручную, подсунув системе только всего один патч, подходящий для данного процессора и все станет понятно.
В принципе узнать было ли обновление микрокода можно и подругому - из вывода cpuinfo или на прямую, считав информацию из регистра MSR
1. До обновления микрокода
cat /proc/cpuinfo | grep -m 1 microcode
microcode : 0x14
sudo rdmsr 0x8B -f 63:00
1400000000 .... (что соответсвует 0x14)
2. После обновления микрокода (я обновляю микрокод только при необходимости, прямо из работающей системы)
cat /proc/cpuinfo | grep -m 1 microcode
microcode : 0x2f
sudo rdmsr 0x8B -f 63:00
2f00000000 .... (что соответсвует 0x2f)
Ошибки не исчезают с опытом - они просто умнеют
vladimirov_georgij
Таким образом, "похожее" обновление микрокода 06-0d-06 не является подходящим?
Отвечал ночью, а потому ответ был не совсем точный.
Однозначно ответить нельзя. Возможно теоретически и является, нужен подробный анализ, а это не так то и просто. Кроме того нужно знать по каким параметрам идет поиск чтобы установить нужное обновление и в итоге получить строку
vladimirov_georgij
Если обновление доступно, оно должно отобразиться под selected microcodes
Так что возможно это обновление и является подходящим, но, как видно из вывода, версия этого найденного обновления (rev 0x0018) старее установленной (revision=0x20). Возможно в твоем случае это и является основной причиной не выполнения обновления.
Как уже писал выше, перед обновлением идет проверка многих параметров и если что то не соответствует, то обновление не выполняется.
А потому в подобных ситуациях и нужно внимательнее читать логи, в них всегда можно найти что то полезное, что поможет ответить на вопрос.

И как написал выше - не стоит лезти в эти дебри ради интереса, не нужно делать проверки - доверся электронному мозгу, он редко когда ошибается.
А если уж залазить, то капитально, чтобы понимать что к чему, а для этого нужно много читать.

PS - осмелюсь перефразировать цитату Мао Цзэдуна - компьютер это не бумажный тигр, не стоит его дергать за усы.
Ошибки не исчезают с опытом - они просто умнеют
Как правило сигнатура процессора является именем файла-бинарника для обновления ... но бывают и исключения. В скачиваемом файле обновления intel-ucode находится около сотни файлов-бинарников (патчей микрокода).
ls ~/Документы/Firmware/microcode/intel_microcode/intel-ucode | wc -l
108
Мой пример: sig=0x206a7, signature=06-2a-07 и смотрим наличие патча
ls ~/Документы/Firmware/microcode/intel_microcode/intel-ucode | grep 06-2a-07
06-2a-07
Для выполнения автоматического обновления микрокода мне достаточно скопировать файл 06-2a-07 в директорию /usr/lib/firmware/intel-ucode … и все, больше ничего не нужно.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.