On Wed, Jan 22, 2020 at 10:47:28AM +0100, Vitaly Kuznetsov wrote: > Oliver Upton <oupton@xxxxxxxxxx> writes: > > > The RDTSC VM-exit test requires the 'use TSC offsetting' processor-based > > VM-execution control be allowed on the host. Check this precondition > > before running the test rather than asserting it later on to avoid > > erroneous failures on a host without TSC offsetting. > > > > Cc: Aaron Lewis <aaronlewis@xxxxxxxxxx> > > Signed-off-by: Oliver Upton <oupton@xxxxxxxxxx> > > --- > > x86/vmx_tests.c | 8 +++++--- > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c > > index 3b150323b325..de9a931216e2 100644 > > --- a/x86/vmx_tests.c > > +++ b/x86/vmx_tests.c > > @@ -9161,9 +9161,6 @@ static void vmx_vmcs_shadow_test(void) > > */ > > static void reset_guest_tsc_to_zero(void) > > { > > - TEST_ASSERT_MSG(ctrl_cpu_rev[0].clr & CPU_USE_TSC_OFFSET, > > - "Expected support for 'use TSC offsetting'"); > > - > > vmcs_set_bits(CPU_EXEC_CTRL0, CPU_USE_TSC_OFFSET); > > vmcs_write(TSC_OFFSET, -rdtsc()); > > } > > @@ -9210,6 +9207,11 @@ static void rdtsc_vmexit_diff_test(void) > > int fail = 0; > > int i; > > > > + if (!(ctrl_cpu_rev[0].clr & CPU_USE_TSC_OFFSET)) { > > + printf("CPU doesn't support the 'use TSC offsetting' processor-based VM-execution control.\n"); > > + return; > > + } > > + > > Can we use test_skip() instead, something like > > diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c > index dd32b3aef08b..bfecf36d37ef 100644 > --- a/x86/vmx_tests.c > +++ b/x86/vmx_tests.c > @@ -9166,6 +9166,9 @@ static void rdtsc_vmexit_diff_test(void) > int fail = 0; > int i; > > + if (!(ctrl_cpu_rev[0].clr & CPU_USE_TSC_OFFSET)) > + test_skip("CPU doesn't support the 'use TSC offsetting' processor-based VM-execution control.\n"); > + > test_set_guest(rdtsc_vmexit_diff_test_guest); > > reset_guest_tsc_to_zero(); > > ? Even better :) Thanks Vitaly! > > test_set_guest(rdtsc_vmexit_diff_test_guest); > > > > reset_guest_tsc_to_zero(); > > -- > Vitaly >