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. > + 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 >