On 6/17/2022 2:40 AM, Sean Christopherson wrote:
On Wed, Jun 15, 2022, Yang Weijiang wrote:
When pmu is disabled in KVM, reading MSR_CORE_PERF_GLOBAL_CTRL
or executing rdpmc leads to #GP, so skip related tests in this case.
Signed-off-by: Yang Weijiang <weijiang.yang@xxxxxxxxx>
---
x86/vmx_tests.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c
index 4d581e7..dd6fc13 100644
--- a/x86/vmx_tests.c
+++ b/x86/vmx_tests.c
@@ -944,6 +944,16 @@ static void insn_intercept_main(void)
continue;
}
+ if (insn_table[cur_insn].flag == CPU_RDPMC) {
+ struct cpuid id = cpuid(10);
+
+ if (!(id.a & 0xff)) {
Please add helpers to query (a) the PMU version and (b) whether or not PERF_GLOBAL_CTRL
is supported.
Sure.
+ printf("\tFeature required for %s is not supported.\n",
+ insn_table[cur_insn].name);
+ continue;
+ }
+ }
+
if (insn_table[cur_insn].disabled) {
printf("\tFeature required for %s is not supported.\n",
insn_table[cur_insn].name);
@@ -7490,6 +7500,13 @@ static void test_perf_global_ctrl(u32 nr, const char *name, u32 ctrl_nr,
static void test_load_host_perf_global_ctrl(void)
{
+ struct cpuid id = cpuid(10);
+
+ if (!(id.a & 0xff)) {
+ report_skip("test_load_host_perf_global_ctrl");
+ return;
+ }
+
if (!(ctrl_exit_rev.clr & EXI_LOAD_PERF)) {
printf("\"load IA32_PERF_GLOBAL_CTRL\" exit control not supported\n");
return;
@@ -7502,6 +7519,13 @@ static void test_load_host_perf_global_ctrl(void)
static void test_load_guest_perf_global_ctrl(void)
{
+ struct cpuid id = cpuid(10);
+
+ if (!(id.a & 0xff)) {
+ report_skip("test_load_guest_perf_global_ctrl");
+ return;
+ }
+
if (!(ctrl_enter_rev.clr & ENT_LOAD_PERF)) {
printf("\"load IA32_PERF_GLOBAL_CTRL\" entry control not supported\n");
return;
--
2.31.1