You are not logged in.
Hello,
I'm trying to get amd-ucode microcode to "load early" during boot using systemd-boot from an EFI / ESP partition on this hardware:
CPU: AMD Threadripper 1950x
MBOARD: Asrock X399 Taichi motherboard running BIOS 2.00
The dmesg snippet below is with the latest 5.3.13 kernel (similar logs with the LTS kernel):
$ dmesg
[ 0.000000] Linux version 5.3.13-arch1-1 (linux@archlinux) (gcc version 9.2.0 (GCC)) #1 SMP PREEMPT Sun, 24 Nov 2019 10:15:50 +0000
[ 0.000000] Command line: initrd=\EFI\Linux\Arch\amd-ucode.img initrd=\EFI\Linux\Arch\initramfs-linux.img root=PARTUUID=46e0becd-d1ab-fc40-9b63-3e06297c1664 rw
..etc..
[ 0.000000] Kernel command line: initrd=\EFI\Linux\Arch\amd-ucode.img initrd=\EFI\Linux\Arch\initramfs-linux.img root=PARTUUID=46e0becd-d1ab-fc40-9b63-3e06297c1664 rw
..etc..
[ 1.750708] microcode: CPU0: patch_level=0x08001129
[ 1.750723] microcode: CPU1: patch_level=0x08001129
[ 1.750738] microcode: CPU2: patch_level=0x08001129
[ 1.750740] microcode: CPU3: patch_level=0x08001129
[ 1.750755] microcode: CPU4: patch_level=0x08001129
[ 1.750771] microcode: CPU5: patch_level=0x08001129
..etc..
[ 1.750910] microcode: CPU25: patch_level=0x08001129
[ 1.750916] microcode: CPU26: patch_level=0x08001129
[ 1.750923] microcode: CPU27: patch_level=0x08001129
[ 1.750929] microcode: CPU28: patch_level=0x08001129
[ 1.750935] microcode: CPU29: patch_level=0x08001129
[ 1.750942] microcode: CPU30: patch_level=0x08001129
[ 1.750950] microcode: CPU31: patch_level=0x08001129
[ 1.750980] microcode: Microcode Update Driver: v2.2.
..etc..
Where according to this reference:
https://wiki.archlinux.org/index.php/Microcode
I should either see this log for "early loading", but it doesn't appear above:
microcode: microcode updated early to new patch_level=...blah....
But neither does this log appear for "late loading":
x86/CPU: CPU features have changed after loading microcode, but might not take effect.
So it's not clear to me if early or late microcode loading is occurring on this system?
Here are some additional details:
[root@arch-tr] ~ # lsblk -i
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1 259:1 0 477G 0 disk
|-nvme1n1p1 259:2 0 512M 0 part /esp
|-nvme1n1p2 259:3 0 40G 0 part /
|-nvme1n1p3 259:4 0 16M 0 part
|-nvme1n1p4 259:5 0 249.5G 0 part
|-nvme1n1p5 259:6 0 470M 0 part
`-nvme1n1p6 259:7 0 186.4G 0 part /home
[root@arch-tr] ~ # ls -l /boot
total 134448
-rwxr-xr-x 1 root root 40960 Nov 17 10:37 amd-ucode.img
-rwxr-xr-x 1 root root 43090472 Nov 29 05:39 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root 40580494 Nov 29 05:38 initramfs-linux-lts-fallback.img
-rwxr-xr-x 1 root root 19898750 Nov 29 05:38 initramfs-linux-lts.img
-rwxr-xr-x 1 root root 21862475 Nov 29 05:39 initramfs-linux.img
drwxr-xr-x 2 root root 4096 Nov 29 05:30 loader
-rwxr-xr-x 1 root root 6285696 Nov 27 06:06 vmlinuz-linux
-rwxr-xr-x 1 root root 5896064 Nov 27 06:06 vmlinuz-linux-lts
[root@arch-tr] ~ # ls -l /esp/EFI/Linux/Arch/
total 134448
-rwxr-xr-x 1 root root 40960 Nov 17 10:37 amd-ucode.img
-rwxr-xr-x 1 root root 43090472 Nov 29 05:39 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root 40580494 Nov 29 05:38 initramfs-linux-lts-fallback.img
-rwxr-xr-x 1 root root 19898750 Nov 29 05:38 initramfs-linux-lts.img
-rwxr-xr-x 1 root root 21862475 Nov 29 05:39 initramfs-linux.img
drwxr-xr-x 2 root root 4096 Nov 29 05:30 loader
-rwxr-xr-x 1 root root 6285696 Nov 27 06:06 vmlinuz-linux
-rwxr-xr-x 1 root root 5896064 Nov 27 06:06 vmlinuz-linux-lts
Where this is the "late loading" firmware, where I think "microcode_amd_fam17h.bin" is for Threadripper:
[root@arch-tr] ~ # ls -l /usr/lib/firmware/amd-ucode/
total 40
-rw-r--r-- 1 root root 12684 Nov 17 10:37 microcode_amd.bin
-rw-r--r-- 1 root root 7876 Nov 17 10:37 microcode_amd_fam15h.bin
-rw-r--r-- 1 root root 3510 Nov 17 10:37 microcode_amd_fam16h.bin
-rw-r--r-- 1 root root 9700 Nov 17 10:37 microcode_amd_fam17h.bin
And finally the systemd-boot entry to Arch, where I added the "amd-ucode.img" line:
[root@arch-tr] ~ # cat /esp/loader/entries/Arch.conf
title Arch Linux
linux /EFI/Linux/Arch/vmlinuz-linux
initrd /EFI/Linux/Arch/amd-ucode.img
initrd /EFI/Linux/Arch/initramfs-linux.img
options root=PARTUUID=46e0becd-d1ab-fc40-9b63-3e06297c1664 rw
Any ideas on what is happening on this system with the microcode early / late loading, anything else to try?
Thank you!
Offline
Is your microcode already at the latest version - usually the case if you have a recent firmware update?
If so then no updating will take place...
Edit - No Threadripper here so I'm not up to date on the latest firmware versions like I am with my 2700X
Last edited by Slithery (2019-11-29 13:26:34)
Offline
Hmmm, I dunno....
I upgraded the X399 Motherboard UEFI BIOS from 2.0 (Nov 2018) to 3.80 (Sept 2019) and the patch_level is now as shown below. No reference to early / late loading. That's about all that I've figured out....
[ 0.000000] Command line: initrd=\EFI\Linux\Arch\amd-ucode.img initrd=\EFI\Linux\Arch\initramfs-linux.img root=PARTUUID=46e0becd-d1ab-fc40-9b63-3e06297c1664 rw
[ 0.000000] Kernel command line: initrd=\EFI\Linux\Arch\amd-ucode.img initrd=\EFI\Linux\Arch\initramfs-linux.img root=PARTUUID=46e0becd-d1ab-fc40-9b63-3e06297c1664 rw
[ 1.766892] microcode: CPU0: patch_level=0x08001137
[ 1.766907] microcode: CPU1: patch_level=0x08001137
[ 1.766909] microcode: CPU2: patch_level=0x08001137
[ 1.766925] microcode: CPU3: patch_level=0x08001137
[ 1.766942] microcode: CPU4: patch_level=0x08001137
[ 1.766957] microcode: CPU5: patch_level=0x08001137
[ 1.766964] microcode: CPU6: patch_level=0x08001137
.. etc ..
[ 1.767161] microcode: Microcode Update Driver: v2.2.
Offline
$ dmesg | grep microcode
[ 1.441003] microcode: CPU0: patch_level=0x08001137
[ 1.441008] microcode: CPU1: patch_level=0x08001137
[ 1.441010] microcode: CPU2: patch_level=0x08001137
[ 1.441017] microcode: CPU3: patch_level=0x08001137
[ 1.441024] microcode: CPU4: patch_level=0x08001137
[ 1.441031] microcode: CPU5: patch_level=0x08001137
[ 1.441040] microcode: CPU6: patch_level=0x08001137
[ 1.441049] microcode: CPU7: patch_level=0x08001137
[ 1.441058] microcode: CPU8: patch_level=0x08001137
[ 1.441067] microcode: CPU9: patch_level=0x08001137
[ 1.441075] microcode: CPU10: patch_level=0x08001137
[ 1.441083] microcode: CPU11: patch_level=0x08001137
[ 1.441089] microcode: CPU12: patch_level=0x08001137
[ 1.441094] microcode: CPU13: patch_level=0x08001137
[ 1.441099] microcode: CPU14: patch_level=0x08001137
[ 1.441104] microcode: CPU15: patch_level=0x08001137
[ 1.441111] microcode: CPU16: patch_level=0x08001137
[ 1.441116] microcode: CPU17: patch_level=0x08001137
[ 1.441123] microcode: CPU18: patch_level=0x08001137
[ 1.441130] microcode: CPU19: patch_level=0x08001137
[ 1.441136] microcode: CPU20: patch_level=0x08001137
[ 1.441143] microcode: CPU21: patch_level=0x08001137
[ 1.441150] microcode: CPU22: patch_level=0x08001137
[ 1.441157] microcode: CPU23: patch_level=0x08001137
[ 1.441187] microcode: Microcode Update Driver: v2.2.
$
Same patchlevel for my threadripper 1920X with an ASrock motherboard.
I checked and the logs from december 2 2018 (when I installed archlinux) show the same patch level.
Looks like we should check what version amd-ucode has for threadripper 19xxx processors.
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
(A works at time B) && (time C > time B ) ≠ (A works at time C)
Offline