From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: KarimAllah Ahmed <karahmed@amazon.de>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
x86@kernel.org, Ashok Raj <ashok.raj@intel.com>,
Asit Mallick <asit.k.mallick@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Arjan Van De Ven <arjan.van.de.ven@intel.com>,
Tim Chen <tim.c.chen@linux.intel.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Andi Kleen <ak@linux.intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
Dan Williams <dan.j.williams@intel.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Andy Lutomirski <luto@kernel.org>,
Greg KH <gregkh@linuxfoundation.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH v5 2/5] KVM: x86: Add IBPB support
Date: Wed, 31 Jan 2018 15:28:46 -0500 [thread overview]
Message-ID: <20180131202846.GG22045@char.us.oracle.com> (raw)
In-Reply-To: <1517427467-28567-3-git-send-email-karahmed@amazon.de>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index d46a61b..2e4e8af 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -2285,6 +2285,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
> if (per_cpu(current_vmcs, cpu) != vmx->loaded_vmcs->vmcs) {
> per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
> vmcs_load(vmx->loaded_vmcs->vmcs);
> + indirect_branch_prediction_barrier();
> }
>
> if (!already_loaded) {
> @@ -3342,6 +3343,26 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
> case MSR_IA32_TSC:
> kvm_write_tsc(vcpu, msr_info);
> break;
> + case MSR_IA32_PRED_CMD:
> + if (!msr_info->host_initiated &&
> + !guest_cpuid_has(vcpu, X86_FEATURE_IBPB) &&
> + !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL))
> + return 1;
> +
> + if (data & ~PRED_CMD_IBPB)
> + return 1;
> +
> + if (!data)
> + break;
> +
> + wrmsrl(MSR_IA32_PRED_CMD, PRED_CMD_IBPB);
> +
> + if (is_guest_mode(vcpu))
> + break;
Don't you want this the other way around? That is first do the disable_intercept
and then add the 'if (is_guest_mode(vcpu))' ? Otherwise the very first
MSR write from the guest is going to hit condition above and never end
up executing the disabling of the intercept?
> +
> + vmx_disable_intercept_for_msr(vmx->vmcs01.msr_bitmap, MSR_IA32_PRED_CMD,
> + MSR_TYPE_W);
> + break;
> case MSR_IA32_CR_PAT:
> if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) {
> if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data))
next prev parent reply other threads:[~2018-01-31 20:28 UTC|newest]
Thread overview: 51+ 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 ` 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 [this message]
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
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: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-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 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:19 ` Konrad Rzeszutek Wilk
2018-02-01 14:28 ` KarimAllah Ahmed
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=20180131202846.GG22045@char.us.oracle.com \
--to=konrad.wilk@oracle.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=jun.nakajima@intel.com \
--cc=karahmed@amazon.de \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.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 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.