Message ID | 20220615084641.6977-4-weijiang.yang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix up failures induced by !enable_pmu | expand |
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@intel.com> > --- > 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 >
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@intel.com> >> --- >> 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 >>
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)) { + 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;
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@intel.com> --- x86/vmx_tests.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)