All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Mattson <jmattson@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	"kvm list" <kvm@vger.kernel.org>,
	"Wanpeng Li" <wanpeng.li@hotmail.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>
Subject: Re: [PATCH 1/4] KVM: nVMX: move vmentry tasks from prepare_vmcs12 to enter_vmx_non_root_mode
Date: Wed, 23 Aug 2017 14:25:15 -0700	[thread overview]
Message-ID: <CALMp9eRWY16cnqx_w72qXRARsPV3Hw=YAVHc7czpOXsbZs=_EA@mail.gmail.com> (raw)
In-Reply-To: <1503521038-21073-2-git-send-email-pbonzini@redhat.com>

On Wed, Aug 23, 2017 at 1:43 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Setting the VMCS12 to launched and clearing the vm_entry_intr_info_field
> was done as part of L0->L1 exit in prepare_vmcs12.  In order to simplify
> prepare_vmcs12, move this to enter_vmx_non_root_mode since at this point
> we've already committed to vmentry.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  arch/x86/kvm/vmx.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 19aa69af7c2d..01c29b6af254 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -10752,6 +10752,13 @@ static int enter_vmx_non_root_mode(struct kvm_vcpu *vcpu, bool from_vmentry)
>          * returned as far as L1 is concerned. It will only return (and set
>          * the success flag) when L2 exits (see nested_vmx_vmexit()).
>          */
> +       if (from_vmentry) {
> +               vmcs12->launch_state = 1;

Because we defer most guest state validity checks to the hardware
vmlaunch of the vmcs02, it is too early to set the vmcs12 launched
state here. If the exit reason has the high bit set,
vmcs12->launch_state should not be modified.

> +
> +               /* vm_entry_intr_info_field is cleared on exit. Emulate this
> +                * instead of reading the real value. */
> +               vmcs12->vm_entry_intr_info_field &= ~INTR_INFO_VALID_MASK;
> +       }
>         return 0;
>  }
>
> @@ -11121,12 +11128,6 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
>         vmcs12->vmx_instruction_info = vmcs_read32(VMX_INSTRUCTION_INFO);
>
>         if (!(vmcs12->vm_exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY)) {
> -               vmcs12->launch_state = 1;
> -
> -               /* vm_entry_intr_info_field is cleared on exit. Emulate this
> -                * instead of reading the real value. */
> -               vmcs12->vm_entry_intr_info_field &= ~INTR_INFO_VALID_MASK;
> -
>                 /*
>                  * Transfer the event that L0 or L1 may wanted to inject into
>                  * L2 to IDT_VECTORING_INFO_FIELD.
> --
> 1.8.3.1
>
>

  reply	other threads:[~2017-08-23 21:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-23 20:43 [RFC PATCH 0/4] KVM: x86: allow overwriting L2 reinjected exception with L1 vmexit Paolo Bonzini
2017-08-23 20:43 ` [PATCH 1/4] KVM: nVMX: move vmentry tasks from prepare_vmcs12 to enter_vmx_non_root_mode Paolo Bonzini
2017-08-23 21:25   ` Jim Mattson [this message]
2017-08-23 21:47     ` Paolo Bonzini
2017-08-23 20:43 ` [PATCH 2/4] KVM: nVMX: fill nested IDT-vectored event info on all L2->L0 exits Paolo Bonzini
2017-08-23 20:43 ` [PATCH 3/4] KVM: x86: pass struct kvm_queued_exception to kvm_multiple_exception Paolo Bonzini
2017-08-23 20:43 ` [PATCH 4/4] KVM: x86: allow overwriting L2 reinjected exception with L1 vmexit Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALMp9eRWY16cnqx_w72qXRARsPV3Hw=YAVHc7czpOXsbZs=_EA@mail.gmail.com' \
    --to=jmattson@google.com \
    --cc=david@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=wanpeng.li@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.