mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-01 13:36:44 +07:00
1337173148
The current implementations of __ndelay and __udelay call a hypervisor service to delay, but the hypervisor service isn't actually implemented very well, and the consensus is that Linux should handle figuring this out natively and not use a hypervisor service. By converting nanoseconds to cycles, and then spinning until the cycle counter reaches the desired cycle, we get several benefits: first, we are sensitive to the actual clock speed; second, we use less power by issuing a slow SPR read once every six cycles while we delay; and third, we properly handle the case of an interrupt by exiting at the target time rather than after some number of cycles. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> |
||
---|---|---|
.. | ||
atomic_32.c | ||
atomic_asm_32.S | ||
cacheflush.c | ||
checksum.c | ||
cpumask.c | ||
delay.c | ||
exports.c | ||
Makefile | ||
mb_incoherent.S | ||
memchr_32.c | ||
memcpy_32.S | ||
memcpy_tile64.c | ||
memmove.c | ||
memset_32.c | ||
spinlock_32.c | ||
spinlock_common.h | ||
strchr_32.c | ||
strlen_32.c | ||
uaccess.c | ||
usercopy_32.S |