From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Peter Xu <peterx@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>
Subject: Re: [PATCH 1/2] KVM: X86: Move ignore_msrs handling upper the stack
Date: Wed, 24 Jun 2020 23:15:44 -0700 [thread overview]
Message-ID: <20200625061544.GC2141@linux.intel.com> (raw)
In-Reply-To: <20200622220442.21998-2-peterx@redhat.com>
On Mon, Jun 22, 2020 at 06:04:41PM -0400, Peter Xu wrote:
> MSR accesses can be one of:
>
> (1) KVM internal access,
> (2) userspace access (e.g., via KVM_SET_MSRS ioctl),
> (3) guest access.
>
> The ignore_msrs was previously handled by kvm_get_msr_common() and
> kvm_set_msr_common(), which is the bottom of the msr access stack. It's
> working in most cases, however it could dump unwanted warning messages to dmesg
> even if kvm get/set the msrs internally when calling __kvm_set_msr() or
> __kvm_get_msr() (e.g. kvm_cpuid()). Ideally we only want to trap cases (2)
> or (3), but not (1) above.
>
> To achieve this, move the ignore_msrs handling upper until the callers of
> __kvm_get_msr() and __kvm_set_msr(). To identify the "msr missing" event, a
> new return value (KVM_MSR_RET_INVALID==2) is used for that.
IMO, kvm_cpuid() is simply buggy. If KVM attempts to access a non-existent
MSR then it darn well should warn.
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 8a294f9747aa..7ef7283011d6 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -1013,7 +1013,8 @@ bool kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx,
*ebx = entry->ebx;
*ecx = entry->ecx;
*edx = entry->edx;
- if (function == 7 && index == 0) {
+ if (function == 7 && index == 0 && (*ebx | (F(RTM) | F(HLE))) &&
+ (vcpu->arch.arch_capabilities & ARCH_CAP_TSX_CTRL_MSR)) {
u64 data;
if (!__kvm_get_msr(vcpu, MSR_IA32_TSX_CTRL, &data, true) &&
(data & TSX_CTRL_CPUID_CLEAR))
next prev parent reply other threads:[~2020-06-25 6:15 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-22 22:04 [PATCH 0/2] KVM: X86: A few fixes around ignore_msrs Peter Xu
2020-06-22 22:04 ` [PATCH 1/2] KVM: X86: Move ignore_msrs handling upper the stack Peter Xu
2020-06-25 6:15 ` Sean Christopherson [this message]
2020-06-25 8:09 ` Paolo Bonzini
2020-06-25 16:25 ` Sean Christopherson
2020-06-25 17:45 ` Sean Christopherson
2020-06-25 18:44 ` Paolo Bonzini
2020-06-26 15:56 ` Sean Christopherson
2020-06-26 17:37 ` Peter Xu
2020-06-26 17:46 ` Sean Christopherson
2020-06-26 18:07 ` Peter Xu
2020-06-26 18:18 ` Sean Christopherson
2020-06-26 19:11 ` Peter Xu
2020-06-27 14:24 ` Paolo Bonzini
2020-06-30 15:47 ` Sean Christopherson
2020-07-09 18:22 ` Peter Xu
2020-07-09 18:24 ` Paolo Bonzini
2020-07-09 18:34 ` Peter Xu
2020-07-09 19:24 ` Sean Christopherson
2020-07-09 21:09 ` Peter Xu
2020-07-09 21:26 ` Sean Christopherson
2020-07-09 21:50 ` Peter Xu
2020-07-09 22:11 ` Paolo Bonzini
2020-07-10 4:58 ` Sean Christopherson
2020-06-22 22:04 ` [PATCH 2/2] KVM: X86: Do the same ignore_msrs check for feature msrs Peter Xu
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=20200625061544.GC2141@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=vkuznets@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.