On 30/06/20 21:35, Sean Christopherson wrote: > Ping. > > On Mon, Jan 27, 2020 at 06:30:11AM -0800, Aaron Lewis wrote: >> On Sat, Jan 25, 2020 at 11:16 PM Krish Sadhukhan >> <krish.sadhukhan@xxxxxxxxxx> wrote: >>> >>> >>> On 1/24/20 3:46 PM, Sean Christopherson wrote: >>>> Snapshot the delta of the last run and display it in the report if the >>>> test fails. Abort the run loop as soon as the threshold is reached so >>>> that the displayed delta is guaranteed to a failed delta. Displaying >>>> the delta helps triage failures, e.g. is my system completely broken or >>>> did I get unlucky, and aborting the loop early saves 99900 runs when >>>> the system is indeed broken. >>>> >>>> Cc: Nadav Amit <nadav.amit@xxxxxxxxx> >>>> Cc: Aaron Lewis <aaronlewis@xxxxxxxxxx> >>>> Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> >>>> --- >>>> x86/vmx_tests.c | 11 ++++++----- >>>> 1 file changed, 6 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c >>>> index b31c360..4049dec 100644 >>>> --- a/x86/vmx_tests.c >>>> +++ b/x86/vmx_tests.c >>>> @@ -9204,6 +9204,7 @@ static unsigned long long rdtsc_vmexit_diff_test_iteration(void) >>>> >>>> static void rdtsc_vmexit_diff_test(void) >>>> { >>>> + unsigned long long delta; >>>> int fail = 0; >>>> int i; >>>> >>>> @@ -9226,17 +9227,17 @@ static void rdtsc_vmexit_diff_test(void) >>>> vmcs_write(EXI_MSR_ST_CNT, 1); >>>> vmcs_write(EXIT_MSR_ST_ADDR, virt_to_phys(exit_msr_store)); >>>> >>>> - for (i = 0; i < RDTSC_DIFF_ITERS; i++) { >>>> - if (rdtsc_vmexit_diff_test_iteration() >= >>>> - HOST_CAPTURED_GUEST_TSC_DIFF_THRESHOLD) >>>> + for (i = 0; i < RDTSC_DIFF_ITERS && fail < RDTSC_DIFF_FAILS; i++) { >>>> + delta = rdtsc_vmexit_diff_test_iteration(); >>>> + if (delta >= HOST_CAPTURED_GUEST_TSC_DIFF_THRESHOLD) >>>> fail++; >>>> } >>>> >>>> enter_guest(); >>>> >>>> report(fail < RDTSC_DIFF_FAILS, >>>> - "RDTSC to VM-exit delta too high in %d of %d iterations", >>>> - fail, RDTSC_DIFF_ITERS); >>>> + "RDTSC to VM-exit delta too high in %d of %d iterations, last = %llu", >>>> + fail, i, delta); >>>> } >>>> >>>> static int invalid_msr_init(struct vmcs *vmcs) >>> Reviewed-by: Krish Sadhukhan <krish.sadhukhan@xxxxxxxxxx> >> >> Reviewed-by: Aaron Lewis <aaronlewis@xxxxxxxxxx> > Queued, thanks. Paolo