Page MenuHomeFreeBSD

sysutils/cpu-microcode-amd: Update to 2024-01-16 snapshot
ClosedPublic

Authored by jrm on Feb 23 2024, 8:20 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Apr 29, 11:51 AM
Unknown Object (File)
Fri, Apr 26, 12:52 PM
Unknown Object (File)
Fri, Apr 26, 3:39 AM
Unknown Object (File)
Feb 26 2024, 5:43 AM
Unknown Object (File)
Feb 25 2024, 10:36 PM
Unknown Object (File)
Feb 24 2024, 8:36 PM
Subscribers
None

Diff Detail

Repository
R11 FreeBSD ports repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

jrm requested review of this revision.Feb 23 2024, 8:20 PM
jrm created this revision.
jrm retitled this revision from sysutils/cpu-microcode-amd: Update to 2023-10-19 snapshot to sysutils/cpu-microcode-amd: Update to 2024-01-16 snapshot.Feb 23 2024, 8:25 PM

@chs, what should I look for to confirm the update has been applied?

System information:

# dmesg | grep -A1 CPU | head -2
CPU: AMD EPYC 7402P 24-Core Processor                (2800.07-MHz K8-class CPU)
  Origin="AuthenticAMD"  Id=0x830f10  Family=0x17  Model=0x31  Stepping=0

IPMI says,

Firmware Revision: 03.10.31
Firmware Build Time: 12/09/2022

So, unless I'm mistaken, there should be an update available.

When the kernel is starting to boot, I see

Loading configured modules...
/etc/hostid size=0x25
/boot/firmware/amd-ucode.bin size=0x12986

(Hopefully the text above is correct. I had to repair some things lost in translation between the boot loader and impitool.)

I don't see any other indications that something was applied.

# dmesg | grep -i "micro\|update\|ucode"
#

There are some console messages printed by the early loading code, but these happen before the regular kernel printf code is initialized, so you can only see them if you enable "options EARLY_PRINTF" in your kernel config and also use "options UART_NS8250_EARLY_PORT=0x3f8" to set which serial port the early printf output should go to. (eg. the 0x3f8 in this example is com1). you also need to boot with "-v" to enable "bootverbose" messages for the ucode early load activity to be printed.

Another way to verify that the ucode early load has happened is to use "cpucontrol -m 0x8b /dev/cpuctl0" to display the revision of ucode that is currently active. you can boot once with the early load stuff disabled to see the ucode revision that your BIOS has loaded, and then boot again with the early load stuff enabled, and verify that the revision numbers are different. (Intel puts the ucode revision number in the high 32 bits of the MSR value, whereas AMD puts the ucode revision number in the low 32 bits of the MSR value.)

The IPMI "Firmware Revision" is the version of the firmware that your BMC is running, so that's not interesting in this context.

Everything looks good.

# before early loading is enabled
# cpucontrol -m 0x8b /dev/cpuctl0
  MSR 0x8b: 0x00000000 0x08301055

# after early loading is enabled  
# cpucontrol -m 0x8b /dev/cpuctl0
  MSR 0x8b: 0x00000000 0x0830107b

Also, I now see

# dmesg | grep -i micro
CPU microcode: updated from 0x8301055 to 0x830107b

PEBCAK. I was running on something before 34467bd762.

This revision was not accepted when it landed; it landed in state Needs Review.Feb 24 2024, 8:36 PM
This revision was automatically updated to reflect the committed changes.