From: Sean Christopherson <seanjc@google.com>
To: Yang Weijiang <weijiang.yang@intel.com>
Cc: pbonzini@redhat.com, like.xu.linux@gmail.com,
jmattson@google.com, kvm@vger.kernel.org
Subject: Re: [kvm-unit-tests PATCH v2 2/3] x86: Skip running test when pmu is disabled
Date: Thu, 16 Jun 2022 18:34:55 +0000 [thread overview]
Message-ID: <Yqt3zzTV2UrsFX3v@google.com> (raw)
In-Reply-To: <20220615084641.6977-3-weijiang.yang@intel.com>
On Wed, Jun 15, 2022, Yang Weijiang wrote:
> Read MSR_IA32_PERF_CAPABILITIES triggers #GP when pmu is disabled
> by enable_pmu=0 in KVM. Let's check whether pmu is available before
> issue msr reading to avoid the #GP. Also check PDCM bit before read
> the MSR.
>
> Signed-off-by: Yang Weijiang <weijiang.yang@intel.com>
> ---
> x86/pmu_lbr.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/x86/pmu_lbr.c b/x86/pmu_lbr.c
> index 688634d..62614a0 100644
> --- a/x86/pmu_lbr.c
> +++ b/x86/pmu_lbr.c
> @@ -5,6 +5,7 @@
> #define N 1000000
> #define MAX_NUM_LBR_ENTRY 32
> #define DEBUGCTLMSR_LBR (1UL << 0)
> +#define PDCM_ENABLED (1UL << 15)
> #define PMU_CAP_LBR_FMT 0x3f
>
> #define MSR_LBR_NHM_FROM 0x00000680
> @@ -74,13 +75,22 @@ int main(int ac, char **av)
> return 0;
> }
>
> - perf_cap = rdmsr(MSR_IA32_PERF_CAPABILITIES);
> eax.full = id.a;
>
> if (!eax.split.version_id) {
> printf("No pmu is detected!\n");
> return report_summary();
> }
> +
> + id = cpuid(1);
> +
> + if (!(id.c & PDCM_ENABLED)) {
Don't open code cpuid(), add and use X86_FEATURE_PDCM:
#define X86_FEATURE_PDCM (CPUID(0x1, 0, ECX, 15))
if (!this_cpu_has(X86_FEATURE_PDCM))
...
> + printf("No PDCM is detected!\n");
If your going to bother printing a message, please make it useful. Every time I
read PMU code I have to reread the kernel's cpufeatures.h to remember what PDCM
stands for.
printf("Perf/Debug Capabilities MSR isn't supported\n");
> + return report_summary();
> + }
> +
> + perf_cap = rdmsr(MSR_IA32_PERF_CAPABILITIES);
> +
> if (!(perf_cap & PMU_CAP_LBR_FMT)) {
> printf("No LBR is detected!\n");
Similar complaint,
printf("Architectural LBRs are not supported.\n");
> return report_summary();
> --
> 2.31.1
>
next prev parent reply other threads:[~2022-06-16 18:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-15 8:46 [kvm-unit-tests PATCH v2 0/3] Fix up failures induced by !enable_pmu Yang Weijiang
2022-06-15 8:46 ` [kvm-unit-tests PATCH v2 1/3] x86: Remove perf enable bit from default config Yang Weijiang
2022-06-16 18:30 ` Sean Christopherson
2022-06-17 1:30 ` Yang, Weijiang
2022-06-15 8:46 ` [kvm-unit-tests PATCH v2 2/3] x86: Skip running test when pmu is disabled Yang Weijiang
2022-06-16 18:34 ` Sean Christopherson [this message]
2022-06-17 1:47 ` Yang, Weijiang
2022-06-15 8:46 ` [kvm-unit-tests PATCH v2 3/3] x86: Skip perf related tests " Yang Weijiang
2022-06-16 18:40 ` Sean Christopherson
2022-06-17 1:49 ` Yang, Weijiang
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=Yqt3zzTV2UrsFX3v@google.com \
--to=seanjc@google.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=like.xu.linux@gmail.com \
--cc=pbonzini@redhat.com \
--cc=weijiang.yang@intel.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.