From: Like Xu <like.xu.linux@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
kvm list <kvm@vger.kernel.org>
Subject: Re: [PATCH 2/2] KVM: x86: always allow host-initiated writes to PMU MSRs
Date: Wed, 1 Jun 2022 09:12:36 +0800 [thread overview]
Message-ID: <32d83b5d-fda2-ee98-abcb-514459b1af03@gmail.com> (raw)
In-Reply-To: <20220531175450.295552-3-pbonzini@redhat.com>
On 1/6/2022 1:54 am, Paolo Bonzini wrote:
> switch (msr) {
> case MSR_CORE_PERF_FIXED_CTR_CTRL:
> case MSR_CORE_PERF_GLOBAL_STATUS:
> case MSR_CORE_PERF_GLOBAL_CTRL:
> case MSR_CORE_PERF_GLOBAL_OVF_CTRL:
> - ret = pmu->version > 1;
> + if (host_initiated)
> + return true;
> + return pmu->version > 1;
I was shocked not to see this style of code:
return host_initiated || other-else;
> break;
> case MSR_IA32_PEBS_ENABLE:
> - ret = perf_capabilities & PERF_CAP_PEBS_FORMAT;
> + if (host_initiated)
> + return true;
> + return perf_capabilities & PERF_CAP_PEBS_FORMAT;
> break;
> case MSR_IA32_DS_AREA:
> - ret = guest_cpuid_has(vcpu, X86_FEATURE_DS);
> + if (host_initiated)
> + return true;
> + return guest_cpuid_has(vcpu, X86_FEATURE_DS);
> break;
> case MSR_PEBS_DATA_CFG:
> - ret = (perf_capabilities & PERF_CAP_PEBS_BASELINE) &&
> + if (host_initiated)
> + return true;
> + return (perf_capabilities & PERF_CAP_PEBS_BASELINE) &&
> ((perf_capabilities & PERF_CAP_PEBS_FORMAT) > 3);
> break;
> default:
> - ret = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0) ||
> + if (host_initiated)
> + return true;
All default checks will fall in here.
Considering the MSR addresses of different groups are contiguous,
how about separating this part of the mixed statement may look even clearer:
+ case MSR_IA32_PERFCTR0 ... (MSR_IA32_PERFCTR0 + INTEL_PMC_MAX_GENERIC - 1):
+ return host_initiated || get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0);
+ case MSR_IA32_PMC0 ... (MSR_IA32_PMC0 + INTEL_PMC_MAX_GENERIC -1 ):
+ return host_initiated || get_fw_gp_pmc(pmu, msr);
+ case MSR_P6_EVNTSEL0 ... (MSR_P6_EVNTSEL0 + INTEL_PMC_MAX_GENERIC - 1):
+ return host_initiated || get_gp_pmc(pmu, msr,
MSR_P6_EVNTSEL0);
+ case MSR_CORE_PERF_FIXED_CTR0 ... (MSR_CORE_PERF_FIXED_CTR0 +
KVM_PMC_MAX_FIXED - 1):
+ return host_initiated || get_fixed_pmc(pmu, msr);
> + return get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0) ||
> get_gp_pmc(pmu, msr, MSR_P6_EVNTSEL0) ||
> get_fixed_pmc(pmu, msr) || get_fw_gp_pmc(pmu, msr) ||
> intel_pmu_is_valid_lbr_msr(vcpu, msr);
> break;
> }
next prev parent reply other threads:[~2022-06-01 1:12 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-31 17:54 [PATCH 0/2] KVM: vmx, pmu: respect KVM_GET_MSR_INDEX_LIST/KVM_SET_MSR contracts Paolo Bonzini
2022-05-31 17:54 ` [PATCH 1/2] KVM: vmx, pmu: accept 0 for absent MSRs when host-initiated Paolo Bonzini
2022-05-31 18:37 ` Sean Christopherson
2022-06-01 2:46 ` Like Xu
2022-06-01 8:50 ` Paolo Bonzini
2022-06-01 16:39 ` Sean Christopherson
2022-06-02 2:12 ` Like Xu
2022-06-15 18:52 ` Sean Christopherson
2022-06-16 10:37 ` Paolo Bonzini
2022-06-16 15:30 ` Sean Christopherson
2022-06-01 8:54 ` Paolo Bonzini
2022-06-01 9:12 ` Yang, Weijiang
2022-06-01 10:15 ` Paolo Bonzini
2022-06-01 10:42 ` Yang, Weijiang
2022-05-31 17:54 ` [PATCH 2/2] KVM: x86: always allow host-initiated writes to PMU MSRs Paolo Bonzini
2022-06-01 1:12 ` Like Xu [this message]
2022-06-08 22:22 ` Sean Christopherson
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=32d83b5d-fda2-ee98-abcb-514459b1af03@gmail.com \
--to=like.xu.linux@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox