[Comm] Обновление микрокода CPU в P8

Andrey Liakhovets a.o.liakh на gmail.com
Вс Янв 14 13:47:11 MSK 2018


10.01.2018 18:57, Sergey пишет:
> On Wednesday 10 January 2018, you wrote:
> 
>> $ dmesg |grep microcode
>> [    0.609516] microcode: sig=0x306a9, pf=0x10, revision=0x1c
>> [    0.609641] microcode: Microcode Update Driver: v2.01 <tigran на aivazian.fsnet.co.uk>, Peter Oruba
> 
> О! А что это оно в messages не попало у меня параллельно ?.. Странно. Тем не менее,
> ответ на мой вопрос "где смотреть". :-)
> 
>> оно загрузилось?
>  
> Наверное нет, так как у меня, где микрокод в initrd добавился, написано
> 
> [    0.000000] microcode: microcode updated early to revision 0x2e, date = 2004-08-11
> [    0.916378] microcode: sig=0xf29, pf=0x4, revision=0x2e
> [    0.916806] microcode: Microcode Update Driver: v2.01 <tigran на aivazian.fsnet.co.uk>, Peter Oruba
> 
> Есть ещё один вариант, как раз из двух строк:
> 
> [    0.355801] microcode: sig=0xf41, pf=0x10, revision=0x17
> [    0.356085] microcode: Microcode Update Driver: v2.01 <tigran на aivazian.fsnet.co.uk>, Peter Oruba
> 
> И вот тут микрокод и в initrd не попал, то есть, в моём случае, не загрузился точно.

У меня ни на одном из компьютеров с P8 микрокод не грузится (early).

Руками -- нормально (echo 1 > /sys/devices/system/cpu/microcode/reload,
я из intel-microcode.bin всё извлёк с помощью iucode_tool, всё равно мне
для P7 они были нужны).

Выяснилось, что при создании initrd сначала cpio с микрокодом
пристыковывается спереди к cpio с initrd, а только потом всё это
сжимается (gzip). Результат -- нет загрузки микрокода.

Если сперва cpio с initrd сжать, а потом к сжатому спереди приделать
cpio с микрокодом, то всё начинает работать.

Проверил на одном из компов, "разобрав" готовый initrd и сделав из него
описанный выше.
В результате в dmesg самой первой строкой появляется:
[    0.000000] microcode: microcode updated early to revision 0x21, date
= 2017-11-20

Глянул в make-inird (в P8).
Похоже, надо сделать зависимость ucode: compress.
...
Действительно, с таким изменением работает:

--- /usr/share/make-initrd/features/ucode/rules.mk.orig 2017-12-04
11:56:16.000000000 +0300
+++ /usr/share/make-initrd/features/ucode/rules.mk      2018-01-14
13:30:29.495788524 +0300
@@ -1,4 +1,4 @@
-ucode:
+ucode: compress
        @echo "Adding CPU microcode ..."
        @$(ADD_UCODE)
        @if [ -s "$(WORKDIR)/ucode.cpio" ]; then \

(Но вдруг кому-нибудь понадобится несжатый initrd с early микрокодом...)

Андрей Ляховец



Подробная информация о списке рассылки community