All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ivan Orlov <ivan.orlov0322@gmail.com>
To: Sean Christopherson <seanjc@google.com>, Ivan Orlov <iorlov@amazon.com>
Cc: bp@alien8.de, dave.hansen@linux.intel.com, mingo@redhat.com,
	pbonzini@redhat.com, shuah@kernel.org, tglx@linutronix.de,
	hpa@zytor.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, x86@kernel.org,
	dwmw@amazon.co.uk, pdurrant@amazon.co.uk, jalliste@amazon.co.uk
Subject: Re: [PATCH v3 4/7] KVM: VMX: Handle vectoring error in check_emulate_instruction
Date: Wed, 18 Dec 2024 22:00:15 +0000	[thread overview]
Message-ID: <4f3fbcfe-a44c-4cb3-ae99-1a03f8bc2b83@gmail.com> (raw)
In-Reply-To: <Z2MWzyoq8c2FfJnM@google.com>

On 12/18/24 18:39, Sean Christopherson wrote:
> I definitely think it's worth explaining that moving the detection covers new
> emulation cases, and also calling out that handle_ept_misconfig() consults
> vmx_check_emulate_instruction(), i.e. that moving the detection shouldn't
> affect KVM's overall handlng of EPT Misconfig.
> 
> --
> 
> Move handling of emulation during event vectoring, which KVM doesn't
> support, into VMX's check_emulate_instruction(), so that KVM detects
> all unsupported emulation, not just cached emulated MMIO (EPT misconfig).
> E.g. on emulated MMIO that isn't cached (EPT Violation) or occurs with
> legacy shadow paging (#PF).
> 
> Rejecting emulation on other sources of emulation also fixes a largely
> theoretical flaw (thanks to the "unprotect and retry" logic), where KVM
> could incorrectly inject a #DF:
> 
>    1. CPU executes an instruction and hits a #GP
>    2. While vectoring the #GP, a shadow #PF occurs
>    3. On the #PF VM-Exit, KVM re-injects #GP
>    4. KVM emulates because of the write-protected page
>    5. KVM "successfully" emulates and also detects the #GP
>    6. KVM synthesizes a #GP, and since #GP has already been injected,
>       incorrectly escalates to a #DF.
> 
> Fix the comment about EMULTYPE_PF as this flag doesn't necessarily
> mean MMIO anymore: it can also be set due to the write protection
> violation.
> 
> Note, handle_ept_misconfig() checks vmx_check_emulate_instruction() before
> attempting emulation of any kind.
> 

Yeah, I thought that covering the change in non-cacheable MMIO / shadow 
paged #PF handling, but forgot to include it into the commit message :( 
Could you please fix the message when applying? The message you 
suggested looks good to me.

Thanks!

-- 
Kind regards,
Ivan Orlov

  reply	other threads:[~2024-12-18 22:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-17 18:14 [PATCH v3 0/7] Enhance event delivery error handling Ivan Orlov
2024-12-17 18:14 ` [PATCH v3 1/7] KVM: x86: Add function for vectoring error generation Ivan Orlov
2024-12-17 18:14 ` [PATCH v3 2/7] KVM: x86: Add emulation status for unhandleable vectoring Ivan Orlov
2024-12-18 18:23   ` Sean Christopherson
2024-12-17 18:14 ` [PATCH v3 3/7] KVM: x86: Unprotect & retry before unhandleable vectoring check Ivan Orlov
2024-12-17 18:14 ` [PATCH v3 4/7] KVM: VMX: Handle vectoring error in check_emulate_instruction Ivan Orlov
2024-12-18 18:39   ` Sean Christopherson
2024-12-18 22:00     ` Ivan Orlov [this message]
2024-12-17 18:14 ` [PATCH v3 5/7] KVM: SVM: " Ivan Orlov
2024-12-18 18:40   ` Sean Christopherson
2024-12-17 18:14 ` [PATCH v3 6/7] selftests: KVM: extract lidt into helper function Ivan Orlov
2024-12-18 18:41   ` Sean Christopherson
2024-12-17 18:14 ` [PATCH v3 7/7] selftests: KVM: Add test case for MMIO during vectoring Ivan Orlov
2024-12-18 18:44   ` Sean Christopherson
2024-12-18 18:44 ` [PATCH v3 0/7] Enhance event delivery error handling Sean Christopherson
2024-12-18 21:57   ` Ivan Orlov
2024-12-19  2:40 ` Sean Christopherson
2024-12-19 23:19   ` Ivan Orlov

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=4f3fbcfe-a44c-4cb3-ae99-1a03f8bc2b83@gmail.com \
    --to=ivan.orlov0322@gmail.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dwmw@amazon.co.uk \
    --cc=hpa@zytor.com \
    --cc=iorlov@amazon.com \
    --cc=jalliste@amazon.co.uk \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=pdurrant@amazon.co.uk \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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.