On Tue, April 17, 2018 10:31 am, Rudolf Marek wrote:
Hi,
Dne 17.4.2018 v 12:09 awokd via coreboot napsal(a):
At what byte locations in the header is the equivalence table? I was looking for this...
Hm I'm not aware where is it documented, or if there is some tool to manipulate it/dump the structure. Maybe it could be added to some existing tool?
I ran into that too, couldn't find it documented anywhere!
Here is what I deduced from Linux arch/x86/kernel/cpu/microcode/amd.c
header files
0 u32 UCODE_MAGIC
4 u32 UCODE_EQUIV_CPU_TABLE_TYPE (0x0)
8 u32 size of following equiv table say "N"
Then this follows, the last table has installed_cpu_cpuid == 0
u32 installed_cpu_cpuid u32 fixed_errata_mask u32 fixed_errata_compare u16 equiv_cpu u16 res
- N u32 UCODE_UCODE_TYPE (0x1)
- N + 4 u32 sizeof blob (without this header)
- N + 8 microcode blob from github follows here
... Then after that, there clould be again
- X u32 UCODE_UCODE_TYPE
- X + 4 u32 SECTION_SIZE
- X + 8 microcode header (blob from github follows here)
Thank you; I'll try to cross-reference against the AGESA code and see if I can work it out. That was the only way I could get my corebooted system to recognize my equivalent CPU for microcode updates before.