From: Sean Christopherson <seanjc@google.com>
To: Jim Mattson <jmattson@google.com>
Cc: Maxim Levitsky <mlevitsk@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Joerg Roedel <joro@8bytes.org>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Oliver Upton <oupton@google.com>, Peter Shier <pshier@google.com>
Subject: Re: [PATCH v2 00/21] KVM: x86: Event/exception fixes and cleanups
Date: Wed, 6 Jul 2022 17:52:42 +0000 [thread overview]
Message-ID: <YsXL6qfSMHc0ENz8@google.com> (raw)
In-Reply-To: <CALMp9eT_C3tixwK_aZMd-0jQHBSsdrzhYvWk6ZrYkxcC8Pe=CQ@mail.gmail.com>
On Wed, Jul 06, 2022, Jim Mattson wrote:
> On Wed, Jul 6, 2022 at 4:55 AM Maxim Levitsky <mlevitsk@redhat.com> wrote:
>
> > 1. Since #SMI is higher priority than the #MTF, that means that unless dual monitor treatment is used,
> > and the dual monitor handler figures out that #MTF was pending and re-injects it when it
> > VMRESUME's the 'host', the MTF gets lost, and there is no way for a normal hypervisor to
> > do anything about it.
> >
> > Or maybe pending MTF is saved to SMRAM somewhere.
> >
> > In case you will say that I am inventing this again, I am saying now that the above is
> > just a guess.
>
> This is covered in the SDM, volume 3, section 31.14.1: "Default
> Treatment of SMI Delivery:"
>
> The pseudocode above makes reference to the saving of VMX-critical
> state. This state consists of the following:
> (1) SS.DPL (the current privilege level); (2) RFLAGS.VM2; (3) the
> state of blocking by STI and by MOV SS (see
> Table 24-3 in Section 24.4.2); (4) the state of virtual-NMI blocking
> (only if the processor is in VMX non-root oper-
> ation and the “virtual NMIs” VM-execution control is 1); and (5) an
> indication of whether an MTF VM exit is pending
> (see Section 25.5.2). These data may be saved internal to the
> processor or in the VMCS region of the current
> VMCS. Processors that do not support SMI recognition while there is
> blocking by STI or by MOV SS need not save
> the state of such blocking.
>
> Saving VMX-critical state to SMRAM is not documented as an option.
Hmm, I'm not entirely convinced that Intel doesn't interpret "internal to the
processor" as "undocumented SMRAM fields". But I could also be misremembering
the SMI flows.
Regardless, I do like the idea of using vmcs12 instead of SMRAM. That would provide
some extra motivation for moving away from KVM's broken pseudo VM-Exit implementation.
next prev parent reply other threads:[~2022-07-06 17:52 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-14 20:47 [PATCH v2 00/21] KVM: x86: Event/exception fixes and cleanups Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 01/21] KVM: nVMX: Unconditionally purge queued/injected events on nested "exit" Sean Christopherson
2022-06-16 23:47 ` Jim Mattson
2022-07-06 11:40 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 02/21] KVM: VMX: Drop bits 31:16 when shoving exception error code into VMCS Sean Christopherson
2022-07-06 11:43 ` Maxim Levitsky
2022-07-06 16:12 ` Sean Christopherson
2022-07-06 18:50 ` Maxim Levitsky
2022-07-06 20:02 ` Jim Mattson
2022-06-14 20:47 ` [PATCH v2 03/21] KVM: x86: Don't check for code breakpoints when emulating on exception Sean Christopherson
2022-07-06 11:43 ` Maxim Levitsky
2022-07-06 22:17 ` Jim Mattson
2022-06-14 20:47 ` [PATCH v2 04/21] KVM: nVMX: Treat General Detect #DB (DR7.GD=1) as fault-like Sean Christopherson
2022-07-06 11:45 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 05/21] KVM: nVMX: Prioritize TSS T-flag #DBs over Monitor Trap Flag Sean Christopherson
2022-07-06 11:57 ` Maxim Levitsky
2022-07-06 23:51 ` Jim Mattson
2022-07-07 17:14 ` Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 06/21] KVM: x86: Treat #DBs from the emulator as fault-like (code and DR7.GD=1) Sean Christopherson
2022-07-06 11:57 ` Maxim Levitsky
2022-07-06 23:55 ` Jim Mattson
2022-07-07 17:19 ` Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 07/21] KVM: x86: Use DR7_GD macro instead of open coding check in emulator Sean Christopherson
2022-07-06 11:58 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 08/21] KVM: nVMX: Ignore SIPI that arrives in L2 when vCPU is not in WFS Sean Christopherson
2022-07-06 11:59 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 09/21] KVM: nVMX: Unconditionally clear mtf_pending on nested VM-Exit Sean Christopherson
2022-07-06 12:00 ` Maxim Levitsky
2022-07-06 16:45 ` Sean Christopherson
2022-07-06 20:03 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 10/21] KVM: VMX: Inject #PF on ENCLS as "emulated" #PF Sean Christopherson
2022-07-06 12:00 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 11/21] KVM: x86: Rename kvm_x86_ops.queue_exception to inject_exception Sean Christopherson
2022-07-06 12:01 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 12/21] KVM: x86: Make kvm_queued_exception a properly named, visible struct Sean Christopherson
2022-07-06 12:02 ` Maxim Levitsky
2022-07-18 13:07 ` Maxim Levitsky
2022-07-18 13:10 ` Maxim Levitsky
2022-07-18 15:40 ` Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 13/21] KVM: x86: Formalize blocking of nested pending exceptions Sean Christopherson
2022-07-06 12:04 ` Maxim Levitsky
2022-07-06 17:36 ` Sean Christopherson
2022-07-06 20:03 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 14/21] KVM: x86: Use kvm_queue_exception_e() to queue #DF Sean Christopherson
2022-07-06 12:04 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 15/21] KVM: x86: Hoist nested event checks above event injection logic Sean Christopherson
2022-07-06 12:05 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 16/21] KVM: x86: Evaluate ability to inject SMI/NMI/IRQ after potential VM-Exit Sean Christopherson
2022-07-06 12:05 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 17/21] KVM: x86: Morph pending exceptions to pending VM-Exits at queue time Sean Christopherson
2022-07-06 12:15 ` Maxim Levitsky
2022-07-07 1:24 ` Sean Christopherson
2022-07-10 15:56 ` Maxim Levitsky
2022-07-11 15:22 ` Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 18/21] KVM: x86: Treat pending TRIPLE_FAULT requests as pending exceptions Sean Christopherson
2022-07-06 12:16 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 19/21] KVM: VMX: Update MTF and ICEBP comments to document KVM's subtle behavior Sean Christopherson
2022-06-14 20:47 ` [PATCH v2 20/21] KVM: selftests: Use uapi header to get VMX and SVM exit reasons/codes Sean Christopherson
2022-07-06 12:16 ` Maxim Levitsky
2022-06-14 20:47 ` [PATCH v2 21/21] KVM: selftests: Add an x86-only test to verify nested exception queueing Sean Christopherson
2022-07-06 12:17 ` Maxim Levitsky
2022-06-16 13:16 ` [PATCH v2 00/21] KVM: x86: Event/exception fixes and cleanups Maxim Levitsky
2022-06-29 11:16 ` Maxim Levitsky
2022-06-29 13:42 ` Jim Mattson
2022-06-30 8:22 ` Maxim Levitsky
2022-06-30 12:17 ` Jim Mattson
2022-06-30 13:10 ` Maxim Levitsky
2022-06-30 16:28 ` Jim Mattson
2022-07-01 7:37 ` Maxim Levitsky
2022-07-06 11:54 ` Maxim Levitsky
2022-07-06 17:13 ` Jim Mattson
2022-07-06 17:52 ` Sean Christopherson [this message]
2022-07-06 20:03 ` Maxim Levitsky
2022-07-06 20:11 ` Jim Mattson
2022-07-10 15:58 ` Maxim Levitsky
2022-06-29 15:53 ` Jim Mattson
2022-06-30 8:24 ` Maxim Levitsky
2022-06-30 12:20 ` Jim Mattson
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=YsXL6qfSMHc0ENz8@google.com \
--to=seanjc@google.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mlevitsk@redhat.com \
--cc=oupton@google.com \
--cc=pbonzini@redhat.com \
--cc=pshier@google.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).