mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-22 10:13:16 +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> |
||
---|---|---|
.. | ||
asm-offsets.c | ||
backtrace.c | ||
compat_signal.c | ||
compat.c | ||
early_printk.c | ||
entry.S | ||
hardwall.c | ||
head_32.S | ||
hvglue.lds | ||
init_task.c | ||
intvec_32.S | ||
irq.c | ||
machine_kexec.c | ||
Makefile | ||
messaging.c | ||
module.c | ||
pci-dma.c | ||
pci.c | ||
proc.c | ||
process.c | ||
ptrace.c | ||
reboot.c | ||
regs_32.S | ||
relocate_kernel.S | ||
setup.c | ||
signal.c | ||
single_step.c | ||
smp.c | ||
smpboot.c | ||
stack.c | ||
sys.c | ||
tile-desc_32.c | ||
time.c | ||
tlb.c | ||
traps.c | ||
vmlinux.lds.S |