Re: [PATCH 1/1] Update AMD cpu microcode for family 15h

From: Rudolf Marek
Date: Sat Sep 01 2018 - 13:10:29 EST


Hi again,

Here is a short summary of what is missing in the microcode containers [1] [2]. I only included AMD family 15h and 17h.
Similar could be done for Intel CPUs.

I do believe having a latest microcode is a vital for the userspace security because it provides
IBPB barrier.

Family 15h [1] container parsed with [4] (with some lines omitted)

-- Processor Signature: : 0x00600f20
-- Processor Revision ID: : 0x00006020

-- Processor Signature: : 0x00610f01
-- Processor Revision ID: : 0x00006101

-- Processor Signature: : 0x00600f12
-- Processor Revision ID: : 0x00006012

Contains following microcodes:

| # | eqrev| urev | date | latest|
| 1 | 6012 | 0600063E | 2018/02/07 | yes |
| 2 | 6020 | 06000852 | 2018/02/06 | yes |
| 3 | 6101 | 06001119 | 2012/07/13 | no |

Note the #3 is what I have been complaining about.

Family 17h [2] parsed with [4]

The container seems to include the equivalent versions for various CPUs (not even a family17h) but only a microcode for a "Naples/EPYC" chips.

Container Processor Signature Table:
-- Processor Signature: : 0x00600f20 (not even a fam17h)
-- Processor Revision ID: : 0x00006020

-- Processor Signature: : 0x00610f01 (not even a fam17h)
-- Processor Revision ID: : 0x00006101

-- Processor Signature: : 0x00700f01 (not even a fam17h)
-- Processor Revision ID: : 0x00007001

-- Processor Signature: : 0x00800f12 (update is OK)
-- Processor Revision ID: : 0x00008012

-- Processor Signature: : 0x00800f11 (update is missing!)
-- Processor Revision ID: : 0x00008011

-- Processor Signature: : 0x00600f12 (not even a fam17h)
-- Processor Revision ID: : 0x00006012

-- Processor Signature: : 0x00800f13 (future CPU?)
-- Processor Revision ID: : 0x00008013

-- Processor Signature: : 0x00800f00 (perhaps ES?)
-- Processor Revision ID: : 0x00008000

Microcode Type: : 0x00000001
Microcode Size: : 0x00000c80
Date : 2018/02/09
Patch ID : 0x08001227
Patch Data ID : 0x00008004

| # | eqrev| urev | date | latest|
| 1 | 8004 | 08001227 | 2018/02/09 | yes |

It misses microcode update for 00800F11 - latest known should be 2018/02/14 and for other CPUs like Pinacle Ridge 00800F82 - latest known should be 2018/02/12
Or Ryzen mobile 00810F10 etc...

Thanks
Rudolf

Resources used to construct this tables:

[1] https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amd-ucode/microcode_amd_fam15h.bin
[2] https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amd-ucode/microcode_amd_fam17h.bin
[3] http://users.atw.hu/instlatx64/
[4] https://github.com/ddcc/microparse