On Tue, Mar 02, 2021, Babu Moger wrote: > This problem was reported on a SVM guest while executing kexec. > Kexec fails to load the new kernel when the PCID feature is enabled. > > When kexec starts loading the new kernel, it starts the process by > resetting the vCPU's and then bringing each vCPU online one by one. > The vCPU reset is supposed to reset all the register states before the > vCPUs are brought online. However, the CR4 register is not reset during > this process. If this register is already setup during the last boot, > all the flags can remain intact. The X86_CR4_PCIDE bit can only be > enabled in long mode. So, it must be enabled much later in SMP > initialization. Having the X86_CR4_PCIDE bit set during SMP boot can > cause a boot failures. > > Fix the issue by resetting the CR4 register in init_vmcb(). > > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> Cc: stable@xxxxxxxxxxxxxxx The bug goes back too far to have a meaningful Fixes. Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx> On a related topic, I think we can clean up the RESET/INIT flows by hoisting the common code into kvm_vcpu_reset(). That would also provide good motivation for removing the init_vmcb() call in svm_create_vcpu(), which is fully redundant with the call in svm_vcpu_reset(). I'll put that on the todo list.