Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1261432 > unrolled thread

[PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset

Started byWanpeng Li <wanpeng.li@hotmail.com>
First post2015-11-03 12:50 +0100
Last post2015-11-03 13:00 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset Wanpeng Li <wanpeng.li@hotmail.com> - 2015-11-03 12:50 +0100
    Re: [PATCH v2] KVM: x86: Reset RFLAGS state following processor  init/reset Paolo Bonzini <pbonzini@redhat.com> - 2015-11-03 13:00 +0100

#1261432 — [PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset

FromWanpeng Li <wanpeng.li@hotmail.com>
Date2015-11-03 12:50 +0100
Subject[PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset
Message-ID<qqIga-2a9-11@gated-at.bofh.it>
Reference SDM Volume 1 3.4.3:

Following initialization of the processor (either by asserting the 
RESET pin or the INIT pin), the state of the EFLAGS register is 
00000002H.

However, the eflags fixed bit is not set and other bits are also not 
cleared during the init/reset in kvm.

This patch reset eflags register to 00000002H following initialization 
of the processor.

Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
---
v1 -> v2:
 * use vmcs_writel

 arch/x86/kvm/vmx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index b680c2e..1a95ef7 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -4935,6 +4935,7 @@ static void vmx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
 	vmx_set_efer(vcpu, 0);
 	vmx_fpu_activate(vcpu);
 	update_exception_bitmap(vcpu);
+	vmcs_writel(GUEST_RFLAGS, X86_EFLAGS_FIXED);
 
 	vpid_sync_context(vmx->vpid);
 }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1261440 — Re: [PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset

FromPaolo Bonzini <pbonzini@redhat.com>
Date2015-11-03 13:00 +0100
SubjectRe: [PATCH v2] KVM: x86: Reset RFLAGS state following processor init/reset
Message-ID<qqIpQ-2dn-15@gated-at.bofh.it>
In reply to#1261432

On 03/11/2015 12:40, Wanpeng Li wrote:
> Reference SDM Volume 1 3.4.3:
> 
> Following initialization of the processor (either by asserting the 
> RESET pin or the INIT pin), the state of the EFLAGS register is 
> 00000002H.
> 
> However, the eflags fixed bit is not set and other bits are also not 
> cleared during the init/reset in kvm.
> 
> This patch reset eflags register to 00000002H following initialization 
> of the processor.
> 
> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
> ---
> v1 -> v2:
>  * use vmcs_writel
> 
>  arch/x86/kvm/vmx.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index b680c2e..1a95ef7 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -4935,6 +4935,7 @@ static void vmx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
>  	vmx_set_efer(vcpu, 0);
>  	vmx_fpu_activate(vcpu);
>  	update_exception_bitmap(vcpu);
> +	vmcs_writel(GUEST_RFLAGS, X86_EFLAGS_FIXED);
>  
>  	vpid_sync_context(vmx->vpid);
>  }
> 

No, this is doing exactly the same thing that is already done elsewhere
in vmx_vcpu_reset (which Nadav pointed out to you).  So it's not just a
pointless addition with no effect at all; it's wrong, because it
introduces duplication.

Please answer this question: is there a bug or not?

If yes, then using kvm_set_rflags as in v1 is the right thing.  However,
you have to remove the _existing_ vmcs_writel call in vmx_vcpu_reset.
Also, if there is a bug you have to explain it in the commit message and
provide a testcase.  By the way, I am still waiting for the VPID test cases.

If no, then this is a cleanup, we can still do the change but you have
to explain this in the commit message.

Paolo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web