KVM: x86: Processor mode may be determined incorrectly
If EFER.LMA is off, cs.l does not determine execution mode. Currently, the emulation engine assumes differently. Signed-off-by: Nadav Amit <namit@cs.technion.ac.il> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
e6e39f0438
commit
42bf549f3c
|
@ -4888,7 +4888,7 @@ static void init_emulate_ctxt(struct kvm_vcpu *vcpu)
|
|||
ctxt->eip = kvm_rip_read(vcpu);
|
||||
ctxt->mode = (!is_protmode(vcpu)) ? X86EMUL_MODE_REAL :
|
||||
(ctxt->eflags & X86_EFLAGS_VM) ? X86EMUL_MODE_VM86 :
|
||||
cs_l ? X86EMUL_MODE_PROT64 :
|
||||
(cs_l && is_long_mode(vcpu)) ? X86EMUL_MODE_PROT64 :
|
||||
cs_db ? X86EMUL_MODE_PROT32 :
|
||||
X86EMUL_MODE_PROT16;
|
||||
ctxt->guest_mode = is_guest_mode(vcpu);
|
||||
|
|
Loading…
Reference in New Issue