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>,
	David Hildenbrand <david@redhat.com>
Subject: Re: [PATCH 2/6] KVM: VMX: remove bogus check for invalid EPT violation
Date: Thu, 30 Mar 2017 09:30:16 -0700	[thread overview]
Message-ID: <CALMp9eQCVMCQr3D3D6KoxO3adii8X9qQ+OVqXiL9ESiN9Ynijw@mail.gmail.com> (raw)
In-Reply-To: <1490867732-16743-3-git-send-email-pbonzini@redhat.com>

On Thu, Mar 30, 2017 at 2:55 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> handle_ept_violation is checking for "guest-linear-address invalid" +
> "not a paging-structure walk".  However, _all_ EPT violations without
> a valid guest linear address are paging structure walks, because those
> EPT violations happen when loading the guest PDPTEs.
>
> Therefore, the check can never be true, and even if it were, KVM doesn't
> care about the guest linear address; it only uses the guest *physical*
> address VMCS field.  So, remove the check altogether.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The check can never be true because the SDM says so explicitly: Bit 8
is "Reserved if bit 7 is 0 (cleared to 0)."

Reviewed-by: Jim Mattson <jmattson@google.com>
> ---
>  arch/x86/kvm/vmx.c | 14 --------------
>  1 file changed, 14 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 0e61b9226bf2..1c372600a962 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -6208,23 +6208,9 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)
>         unsigned long exit_qualification;
>         gpa_t gpa;
>         u32 error_code;
> -       int gla_validity;
>
>         exit_qualification = vmcs_readl(EXIT_QUALIFICATION);
>
> -       gla_validity = (exit_qualification >> 7) & 0x3;
> -       if (gla_validity == 0x2) {
> -               printk(KERN_ERR "EPT: Handling EPT violation failed!\n");
> -               printk(KERN_ERR "EPT: GPA: 0x%lx, GVA: 0x%lx\n",
> -                       (long unsigned int)vmcs_read64(GUEST_PHYSICAL_ADDRESS),
> -                       vmcs_readl(GUEST_LINEAR_ADDRESS));
> -               printk(KERN_ERR "EPT: Exit qualification is 0x%lx\n",
> -                       (long unsigned int)exit_qualification);
> -               vcpu->run->exit_reason = KVM_EXIT_UNKNOWN;
> -               vcpu->run->hw.hardware_exit_reason = EXIT_REASON_EPT_VIOLATION;
> -               return 0;
> -       }
> -
>         /*
>          * EPT violation happened while executing iret from NMI,
>          * "blocked by NMI" bit has to be set before next VM entry.
> --
> 1.8.3.1
>
>

  reply	other threads:[~2017-03-30 16:30 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-30  9:55 [PATCH v2 0/6] KVM: nVMX: nested EPT improvements and A/D bits, RDRAND and RDSEED exits Paolo Bonzini
2017-03-30  9:55 ` [PATCH 1/6] KVM: nVMX: we support 1GB EPT pages Paolo Bonzini
2017-03-30  9:55 ` [PATCH 2/6] KVM: VMX: remove bogus check for invalid EPT violation Paolo Bonzini
2017-03-30 16:30   ` Jim Mattson [this message]
2017-04-03 11:17   ` David Hildenbrand
2017-04-12 20:00   ` David Hildenbrand
2017-03-30  9:55 ` [PATCH 3/6] kvm: x86: MMU support for EPT accessed/dirty bits Paolo Bonzini
2017-03-31 13:52   ` Radim Krčmář
2017-03-30  9:55 ` [PATCH 4/6] kvm: nVMX: support " Paolo Bonzini
2017-03-31 16:24   ` Radim Krčmář
2017-03-31 16:26     ` Paolo Bonzini
2017-04-11 23:35   ` Bandan Das
2017-04-11 23:54     ` Paolo Bonzini
2017-04-12 23:02       ` Bandan Das
2017-04-14  5:17         ` Paolo Bonzini
2017-03-30  9:55 ` [PATCH 5/6] KVM: VMX: add missing exit reasons Paolo Bonzini
2017-03-30  9:55 ` [PATCH 6/6] KVM: nVMX: support RDRAND and RDSEED exiting Paolo Bonzini
2017-03-30 16:54   ` Jim Mattson
2017-03-31 11:13 ` [PATCH v2 0/6] KVM: nVMX: nested EPT improvements and A/D bits, RDRAND and RDSEED exits 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=CALMp9eQCVMCQr3D3D6KoxO3adii8X9qQ+OVqXiL9ESiN9Ynijw@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 \
    /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.