Re: [PATCH v2] KVM: selftests: hyperv_tlb_flush: replace NOP loop with udelay()

Vitaly Kuznetsov <[email protected]>
Newsgroups org.kernel.vger.kernel-janitors,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <[email protected]>
Piotr Zarycki <[email protected]> writes:

> Replace the open-coded NOP loop with udelay() which was added to KVM
> selftests in commit 6b878cbb87bf ("KVM: selftests: Add guest udelay()
> utility for x86"). The NOP loop is CPU speed dependent while udelay()
> provides a deterministic delay regardless of host CPU frequency.
>
> Signed-off-by: Piotr Zarycki <[email protected]>

Reviewed-by: Vitaly Kuznetsov <[email protected]>

Thanks!

> ---
>  .../testing/selftests/kvm/x86/hyperv_tlb_flush.c  | 15 ++-------------
>  1 file changed, 2 insertions(+), 13 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c b/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
> index c542cc4762b1..4b7f089542c1 100644
> --- a/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
> +++ b/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
> @@ -141,17 +141,6 @@ static void swap_two_test_pages(vm_paddr_t pte_gva1, vm_paddr_t pte_gva2)
>  	*(uint64_t *)pte_gva2 = tmp;
>  }
>  
> -/*
> - * TODO: replace the silly NOP loop with a proper udelay() implementation.
> - */
> -static inline void do_delay(void)
> -{
> -	int i;
> -
> -	for (i = 0; i < 1000000; i++)
> -		asm volatile("nop");
> -}
> -
>  /*
>   * Prepare to test: 'disable' workers by setting the expectation to '0',
>   * clear hypercall input page and then swap two test pages.
> @@ -169,7 +158,7 @@ static inline void prepare_to_test(struct test_data *data)
>  	wmb();
>  
>  	/* Make sure workers have enough time to notice */
> -	do_delay();
> +	udelay(100);
>  
>  	/* Swap test page mappings */
>  	swap_two_test_pages(data->test_pages_pte[0], data->test_pages_pte[1]);
> @@ -189,7 +178,7 @@ static inline void post_test(struct test_data *data, u64 exp1, u64 exp2)
>  	set_expected_val((void *)data->test_pages, exp2, WORKER_VCPU_ID_2);
>  
>  	/* Make sure workers have enough time to test */
> -	do_delay();
> +	udelay(100);
>  }
>  
>  #define TESTVAL1 0x0101010101010101

-- 
Vitaly
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.