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.