diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 55ee75e8440245aa7522f47885d35f3949c38a58..54e48530ade11ed0aa2619fa277cafb02d896a5f 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3420,6 +3420,10 @@ static int kvm_get_sregs(X86CPU *cpu) env->cr[4] = sregs.cr4; env->efer = sregs.efer; + if (sev_es_enabled() && env->efer & MSR_EFER_LME && + env->cr[0] & CR0_PG_MASK) { + env->efer |= MSR_EFER_LMA; + } /* changes to apic base and cr8/tpr are read back via kvm_arch_post_run */ x86_update_hflags(env);