Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: arm64: selftests: Add basic support to generate delays

Add udelay() support to generate a delay in the guest.

The routines are derived and simplified from kernel's
arch/arm64/lib/delay.c.

Signed-off-by: Raghavendra Rao Ananta <rananta@google.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Oliver Upton <oupton@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20211007233439.1826892-8-rananta@google.com

authored by

Raghavendra Rao Ananta and committed by
Marc Zyngier
80166904 d977ed39

+25
+25
tools/testing/selftests/kvm/include/aarch64/delay.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * ARM simple delay routines 4 + */ 5 + 6 + #ifndef SELFTEST_KVM_ARM_DELAY_H 7 + #define SELFTEST_KVM_ARM_DELAY_H 8 + 9 + #include "arch_timer.h" 10 + 11 + static inline void __delay(uint64_t cycles) 12 + { 13 + enum arch_timer timer = VIRTUAL; 14 + uint64_t start = timer_get_cntct(timer); 15 + 16 + while ((timer_get_cntct(timer) - start) < cycles) 17 + cpu_relax(); 18 + } 19 + 20 + static inline void udelay(unsigned long usec) 21 + { 22 + __delay(usec_to_cycles(usec)); 23 + } 24 + 25 + #endif /* SELFTEST_KVM_ARM_DELAY_H */