summaryrefslogtreecommitdiffstats
path: root/arch/riscv/lib/delay.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2019-11-15 10:30:50 +0100
committerThomas Gleixner <tglx@linutronix.de>2019-11-15 10:30:50 +0100
commitac94be498f84f7327533b62faca4c3da64434904 (patch)
tree63893f37afb67cd400bf60ec16a35440d16f2a90 /arch/riscv/lib/delay.c
parentx86/hyperv: Allow guests to enable InvariantTSC (diff)
parentMerge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm (diff)
downloadlinux-ac94be498f84f7327533b62faca4c3da64434904.tar.xz
linux-ac94be498f84f7327533b62faca4c3da64434904.zip
Merge branch 'linus' into x86/hyperv
Pick up upstream fixes to avoid conflicts.
Diffstat (limited to 'arch/riscv/lib/delay.c')
-rw-r--r--arch/riscv/lib/delay.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/riscv/lib/delay.c b/arch/riscv/lib/delay.c
index 87ff89e88f2c..f51c9a03bca1 100644
--- a/arch/riscv/lib/delay.c
+++ b/arch/riscv/lib/delay.c
@@ -81,9 +81,13 @@ EXPORT_SYMBOL(__delay);
void udelay(unsigned long usecs)
{
u64 ucycles = (u64)usecs * lpj_fine * UDELAY_MULT;
+ u64 n;
if (unlikely(usecs > MAX_UDELAY_US)) {
- __delay((u64)usecs * riscv_timebase / 1000000ULL);
+ n = (u64)usecs * riscv_timebase;
+ do_div(n, 1000000);
+
+ __delay(n);
return;
}