From: Paolo Bonzini <pbonzini@redhat.com>
To: Jim Mattson <jmattson@google.com>,
KarimAllah Ahmed <karahmed@amazon.com>
Cc: KarimAllah Ahmed <karahmed@amazon.de>,
kvm list <kvm@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
the arch/x86 maintainers <x86@kernel.org>,
Asit Mallick <asit.k.mallick@intel.com>,
Arjan Van De Ven <arjan.van.de.ven@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Andi Kleen <ak@linux.intel.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
Dan Williams <dan.j.williams@intel.com>,
Jun Nakajima <jun.nakajima@intel.com>,
David Woodhouse <dwmw@amazon.co.uk>,
Greg KH <gregkh@linuxfoundation.org>,
Andy Lutomirski <luto@kernel.org>,
Ashok Raj <ashok.raj@intel.com>
Subject: Re: [PATCH v5 4/5] KVM: VMX: Allow direct access to MSR_IA32_SPEC_CTRL
Date: Wed, 31 Jan 2018 15:34:49 -0500 [thread overview]
Message-ID: <67dca2bb-1298-c7fa-f681-018e4edc6725@redhat.com> (raw)
In-Reply-To: <CALMp9eS9LAJz+u3ujKZ5kLHihHMZ68LHajn3ri7sRPPEgFbHfA@mail.gmail.com>
On 31/01/2018 15:18, Jim Mattson wrote:
>> but save_spec_ctrl_on_exit is also set for L2 write. So once L2 writes
>> to it, this condition will be true and then the bitmap will be updated.
> So if L1 or any L2 writes to the MSR, then save_spec_ctrl_on_exit is
> set to true, even if the MSR permission bitmap for a particular VMCS
> *doesn't* allow the MSR to be written without an intercept. That's
> functionally correct, but inefficient. It seems to me that
> save_spec_ctrl_on_exit should indicate whether or not the *current*
> MSR permission bitmap allows unintercepted writes to IA32_SPEC_CTRL.
> To that end, perhaps save_spec_ctrl_on_exit rightfully belongs in the
> loaded_vmcs structure, alongside the msr_bitmap pointer that it is
> associated with. For vmcs02, nested_vmx_merge_msr_bitmap() should set
> the vmcs02 save_spec_ctrl_on_exit based on (a) whether L0 is willing
> to yield the MSR to L1, and (b) whether L1 is willing to yield the MSR
> to L2.
On the first nested write, (b) must be true for L0 to see the MSR write.
If L1 doesn't yield the MSR to L2, the MSR write results in an L2->L1
vmexit and save_spec_ctrl_on_exit is not set to true.
So save_spec_ctrl_on_exit is set if all of the following are true:
(a) L0 is willing to yield the MSR to L1,
(b) and the write happens in L1,
or all of the following are true:
(a) L0 is willing to yield the MSR to L1,
(b) L1 is willing to yield the MSR to L2,
(c) and the write happens in L2,
It doesn't need to be placed in loaded_vmcs, because in the end if L1 is
willing to yield the MSR to L2, it will have to do reads and writes of
the MSR too, and both loaded_vmcs structs will have
save_spec_ctrl_on_exit=1.
Paolo
next prev parent reply other threads:[~2018-01-31 20:34 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-31 19:37 [PATCH v5 0/5] KVM: Expose speculation control feature to guests KarimAllah Ahmed
2018-01-31 19:37 ` [PATCH v5 1/5] KVM: x86: Update the reverse_cpuid list to include CPUID_7_EDX KarimAllah Ahmed
2018-01-31 20:22 ` Konrad Rzeszutek Wilk
2018-01-31 19:37 ` [PATCH v5 2/5] KVM: x86: Add IBPB support KarimAllah Ahmed
2018-01-31 19:45 ` Jim Mattson
2018-01-31 19:53 ` David Woodhouse
2018-01-31 19:55 ` Jim Mattson
2018-02-01 0:27 ` KarimAllah Ahmed
2018-01-31 20:28 ` Konrad Rzeszutek Wilk
2018-01-31 20:36 ` KarimAllah Ahmed
2018-02-01 4:54 ` Tom Lendacky
2018-02-01 17:00 ` Raj, Ashok
2018-01-31 19:37 ` [PATCH v5 3/5] KVM: VMX: Emulate MSR_IA32_ARCH_CAPABILITIES KarimAllah Ahmed
2018-01-31 19:37 ` [PATCH v5 4/5] KVM: VMX: Allow direct access to MSR_IA32_SPEC_CTRL KarimAllah Ahmed
2018-01-31 19:53 ` Jim Mattson
2018-01-31 20:00 ` David Woodhouse
2018-01-31 20:01 ` KarimAllah Ahmed
2018-01-31 20:18 ` Jim Mattson
2018-01-31 20:21 ` David Woodhouse
2018-01-31 21:18 ` Jim Mattson
2018-01-31 22:05 ` David Woodhouse
2018-01-31 20:34 ` Paolo Bonzini [this message]
2018-01-31 20:54 ` Jim Mattson
2018-01-31 21:00 ` Paolo Bonzini
2018-01-31 21:05 ` Jim Mattson
2018-01-31 21:17 ` Woodhouse, David
2018-01-31 21:42 ` Paolo Bonzini
2018-01-31 21:53 ` Jim Mattson
2018-01-31 21:59 ` Paolo Bonzini
2018-01-31 21:59 ` David Woodhouse
2018-01-31 22:06 ` Jim Mattson
2018-01-31 22:10 ` David Woodhouse
2018-01-31 22:21 ` Linus Torvalds
2018-01-31 22:53 ` Andy Lutomirski
2018-02-01 14:09 ` Paolo Bonzini
2018-01-31 22:52 ` KarimAllah Ahmed
2018-02-01 0:24 ` KarimAllah Ahmed
2018-02-01 4:26 ` Konrad Rzeszutek Wilk
2018-02-01 13:25 ` David Woodhouse
2018-02-01 17:37 ` KarimAllah Ahmed
2018-02-01 17:46 ` KarimAllah Ahmed
2018-02-01 14:19 ` Konrad Rzeszutek Wilk
2018-02-01 14:28 ` KarimAllah Ahmed
2018-01-31 22:56 ` Raj, Ashok
2018-01-31 19:37 ` [PATCH v5 5/5] KVM: SVM: " KarimAllah Ahmed
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=67dca2bb-1298-c7fa-f681-018e4edc6725@redhat.com \
--to=pbonzini@redhat.com \
--cc=aarcange@redhat.com \
--cc=ak@linux.intel.com \
--cc=arjan.van.de.ven@intel.com \
--cc=ashok.raj@intel.com \
--cc=asit.k.mallick@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=dwmw@amazon.co.uk \
--cc=gregkh@linuxfoundation.org \
--cc=jmattson@google.com \
--cc=jun.nakajima@intel.com \
--cc=karahmed@amazon.com \
--cc=karahmed@amazon.de \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=tglx@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®