On Mon, Jan 15, 2024 at 11:22:02AM +0100, Paolo Bonzini wrote:
[ Upstream commit a7939f01672034a58ad3fdbce69bb6c665ce0024 ]
This really isn't this commit id, sorry.
Builtin/initrd microcode will not be used the ucode loader is disabled. But currently, save_microcode_in_initrd is always performed and it accesses MSR_IA32_UCODE_REV even if dis_ucode_ldr is true, and in particular even if X86_FEATURE_HYPERVISOR is set; the TDX module does not implement the MSR and the result is a call trace at boot for TDX guests.
Mainline Linux fixed this as part of a more complex rework of microcode caching that went into 6.7 (see in particular commits dd5e3e3ca6, "x86/microcode/intel: Simplify early loading"; and a7939f0167203, "x86/microcode/amd: Cache builtin/initrd microcode early"). Do the bare minimum in stable kernels, setting initrd_gone just like mainline Linux does in mark_initrd_gone().
Why can't we take the changes in 6.7? Doing a one-off almost always causes problems :(
What exact commits are needed?
thanks,
greg