Messages in this thread | | | Date | Mon, 29 Apr 2024 18:16:54 +0300 | From | "Kirill A. Shutemov" <> | Subject | Re: [PATCHv10 05/18] x86/kexec: Keep CR4.MCE set during kexec for TDX guest |
| |
On Mon, Apr 29, 2024 at 04:45:08PM +0200, Borislav Petkov wrote: > On Mon, Apr 29, 2024 at 04:17:38PM +0300, Kirill A. Shutemov wrote: > > As I mentioned above, clearing CR4.MCE triggers #VE. It is quirk of the > > platform. > > You mean when identity_mapped() runs as part of a kexec-ed kernel, it > might clear CR4.MCE and that would trigger the #VE?
Yes, that's what happens in current upstream.
> So, if that is correct, you basically want to *preserve* the CR4.MCE > setting across kexec?
Yes.
> But then __mcheck_cpu_init_generic() will go and set it > unconditionally.
__mcheck_cpu_init_generic() will not change anything in this case as the bit is already set. Everything is hunky-dory.
> So what exactly is the correct flow here?
TDX guest has CR4.MCE set from time 0 and it has to stay this way all the time including kexec flow.
We have already modified early boot code to preserve CR4.MCE. See 77a512e35db7 ("x86/boot: Avoid #VE during boot for TDX platforms"). The patch extends it to kexec flow.
-- Kiryl Shutsemau / Kirill A. Shutemov
| |