Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#16416 closed enhancement (fixed)

Firmware - the AMD details are a bit out of date.

Reported by: ken@… Owned by: ken@…
Priority: normal Milestone: 11.2
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

This week AMD released firmware for fam17h (Zen, Zen+, Zen2) and also Fam 19h (Zen3). The fam17h blob is now 67KB.

At the moment we list all the old families but not family 19h. Perhaps we should now only list families 17h and 19h, and note that the older families before this are covered in the 11.1 book ? The newest of the initial families in microcode_amd (Bobcat fam14h) is more than 10 years old. For fam15h the newest are the Kaveri refresh APUs from 2016 and the Excavator CPUs from 2016, for fam16h the newest were Puma APUs from 2014 - all according to wikipedia.

That would mean removing the AMD examples since at the moment there is no detail of how current kernels report the AMD update, and it is uncertain if late loading works on AMD : intel were keen to keep that working for their microcode, but there are reports that on recent AMD a power-off (and therefore early loading) is needed (did not make any difference on my machines).

Change History (13)

comment:1 by ken@…, 2 years ago

Although the 67KB for fam17h seemed to be in accordance with what phoronix had reported, Joe Locash has pointed me to [ https://github.com/AMDESE/amd_ucode_info/blob/master/amd_ucode_info.py ] and that told me the file was not a valid container. Going back to git.kernel.org the changelog is as it was, but the file size is now only 9700 bytes.

Running that python3 script confirmed that none of the 3 items in the container match the machine I'm currently on.

I think it would be useful to point to that script so that people can look at what is in the fam17 and fam19 containers.

comment:2 by Douglas R. Reno, 2 years ago

I was thinking about this a little bit today and I think pointing to that script is a great idea.

I do not own any AMD systems that are recent enough to use this microcode though, most of my AMD-based examples are fam10 I think (Phenom II x6).

in reply to:  2 comment:3 by ken@…, 2 years ago

Replying to Douglas R. Reno:

I was thinking about this a little bit today and I think pointing to that script is a great idea.

I do not own any AMD systems that are recent enough to use this microcode though, most of my AMD-based examples are fam10 I think (Phenom II x6).

If those machines are still usable, then I guess (based on the precedent of keeping the radeon mesa driver at my request a few years ago) then I suppose the old details should stay.

comment:4 by Douglas R. Reno, 2 years ago

Those machines are still very usable - one of them is used daily to run a 3D Printer and is kept relatively up to date (11.1-based system, upgraded from 11.0).

comment:5 by Bruce Dubbs, 2 years ago

I have a AMD Ryzen 9 3900X

    CPU family:          23
    Model:               113
    Thread(s) per core:  2
    Core(s) per socket:  12
    Socket(s):           1
    Stepping:            0

that I can use for testing if that helps.

in reply to:  5 comment:6 by ken@…, 2 years ago

Replying to Bruce Dubbs:

I have a AMD Ryzen 9 3900X

    CPU family:          23
    Model:               113
    Thread(s) per core:  2
    Core(s) per socket:  12
    Socket(s):           1
    Stepping:            0

that I can use for testing if that helps.

If you use amd_ucode_info.py on the fam17 blob you will find that it only covers 3 combinations:

Microcode patches in /sources/microcode_amd_fam17h.bin:

Family=0x17 Model=0x08 Stepping=0x02: Patch=0x0800820d Length=3200 bytes Family=0x17 Model=0x01 Stepping=0x02: Patch=0x0800126e Length=3200 bytes Family=0x17 Model=0x31 Stepping=0x00: Patch=0x08301055 Length=3200 bytes

Similarly, for zen3 Rainer reported:

Microcode patches in amd_microcode-2022-04-12/microcode_amd_fam19h.bin:

Family=0x19 Model=0x01 Stepping=0x00: Patch=0x0a001058 Length=5568 bytes Family=0x19 Model=0x01 Stepping=0x01: Patch=0x0a001173 Length=5568 bytes Family=0x19 Model=0x01 Stepping=0x02: Patch=0x0a001229 Length=5568 bytes

comment:7 by ken@…, 2 years ago

From a post today on the phoronix forum, for fam17

Family=0x17 Model=0x08 Stepping=0x02 Ryzen/Threadripper Zen+ 2XXX (and the 1600AF) No change from previous patch level

Family=0x17 Model=0x01 Stepping=0x02 Zen1 EPYC (inc EPYC embedded) updated patch level from previous version

Family=0x17 Model=0x31 Stepping=0x00 Zen2 EPYC newly added patch

comment:8 by ken@…, 2 years ago

Owner: changed from blfs-book to ken@…
Status: newassigned

I've confirmed that the python script also lists what is covered by the old amd.bin and fam15h fam16h files:

icrocode patches in /sources/microcode_amd.bin:

Family=0x10 Model=0x02 Stepping=0x02: Patch=0x01000083 Length=960 bytes Family=0x10 Model=0x02 Stepping=0x0a: Patch=0x01000084 Length=960 bytes Family=0x10 Model=0x06 Stepping=0x02: Patch=0x010000c7 Length=960 bytes Family=0x10 Model=0x05 Stepping=0x03: Patch=0x010000c8 Length=960 bytes Family=0x10 Model=0x09 Stepping=0x01: Patch=0x010000d9 Length=960 bytes Family=0x10 Model=0x08 Stepping=0x00: Patch=0x010000da Length=960 bytes Family=0x10 Model=0x05 Stepping=0x02: Patch=0x010000db Length=960 bytes Family=0x10 Model=0x0a Stepping=0x00: Patch=0x010000dc Length=960 bytes Family=0x11 Model=0x03 Stepping=0x01: Patch=0x02000032 Length=512 bytes Family=0x12 Model=0x01 Stepping=0x00: Patch=0x03000027 Length=960 bytes Family=0x14 Model=0x01 Stepping=0x00: Patch=0x05000029 Length=1568 bytes Family=0x14 Model=0x02 Stepping=0x00: Patch=0x05000119 Length=1568 bytes

Microcode patches in /sources/microcode_amd_fam15h.bin:

Family=0x15 Model=0x01 Stepping=0x02: Patch=0x0600063e Length=2592 bytes Family=0x15 Model=0x02 Stepping=0x00: Patch=0x06000852 Length=2592 bytes Family=0x15 Model=0x10 Stepping=0x01: Patch=0x06001119 Length=2592 bytes

Microcode patches in /sources/microcode_amd_fam16h.bin:

Since the intel tarball includes a list of what it provides, there is no-longer a requirement to dump the microcode into /lib/firmware and try late-loading to see if anything sticks (although peopel can still use late-loading in most cases, possibly at the cost of wasting kernel memory (items compiled in from /lib/firmware use kernel memory, the memory for the initrd is apparently freed).

Instead, people first need to determine the triplet for their CPU and then either read the notes or use the python3 script.

comment:9 by ken@…, 2 years ago

The intel microcode version is now 20220419, this adds new microcode for Atom x5-E39xx

comment:10 by ken@…, 2 years ago

The current instructions for Nvidia graphics appear to only relate to the older chips mentioned in the nouveau wiki. The script fails to run with current python3, but appears to work with python2.

comment:12 by ken@…, 2 years ago

Resolution: fixed
Status: assignedclosed

comment:13 by ken@…, 2 years ago

Bruce noticed that amdgpu firmware was not mentioned, added in 83cc2cc372a92c82bfcf47d753ddce52bb73afc2 11.1-468

Note: See TracTickets for help on using tickets.