From 561fc1e9467bf2e9c8940096b45f550a34e5b72c Mon Sep 17 00:00:00 2001 From: Eduardo Habkost <ehabkost@redhat.com> Date: Mon, 5 Oct 2009 14:32:45 -0300 Subject: [PATCH 1/6] KVM: VMX: Adjust rflags if in real mode emulation RH-Author: Eduardo Habkost <ehabkost@redhat.com> Message-id: <1253315933-28308-3-git-send-email-ehabkost@redhat.com> Patchwork-id: 3459 O-Subject: [RHEL-5.5 KVM PATCH 2/3] KVM: VMX: Adjust rflags if in real mode emulation Bugzilla: 517324 RH-Acked-by: Avi Kivity <avi@redhat.com> RH-Acked-by: Markus Armbruster <armbru@redhat.com> RH-Acked-by: Gleb Natapov <gleb@redhat.com> RH-Acked-by: Juan Quintela <quintela@redhat.com> Bugzilla: https://bugzilla.redhat.com/517324 RH-Upstream-status: backport-from-upstream From: Avi Kivity <avi@redhat.com> We set rflags.vm86 when virtualizing real mode to do through vm8086 mode; so we need to take it out again when reading rflags. aliguori: Ported to RHEL5.4 Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> --- arch/x86/kvm/vmx.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- arch/x86/kvm/vmx.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 45119d2..445f0d0 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -714,7 +714,12 @@ static void vmx_fpu_deactivate(struct kvm_vcpu *vcpu) static unsigned long vmx_get_rflags(struct kvm_vcpu *vcpu) { - return vmcs_readl(GUEST_RFLAGS); + unsigned long rflags; + + rflags = vmcs_readl(GUEST_RFLAGS); + if (vcpu->arch.rmode.active) + rflags &= ~(unsigned long)(X86_EFLAGS_IOPL | X86_EFLAGS_VM); + return rflags; } static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) -- 1.6.3.rc4.29.g8146