summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorVincenzo Frascino <vincenzo.frascino@arm.com>2019-10-16 15:40:24 +0200
committerPaul Burton <paulburton@kernel.org>2019-10-18 23:29:16 +0200
commit8a1bef4193e81c8afae4d2f107f1c09c8ce89470 (patch)
tree1d26ba9a9e6eb48bc256f270f6c0c011d695ba63 /arch
parentMAINTAINERS: Use @kernel.org address for Paul Burton (diff)
downloadlinux-8a1bef4193e81c8afae4d2f107f1c09c8ce89470.tar.xz
linux-8a1bef4193e81c8afae4d2f107f1c09c8ce89470.zip
mips: vdso: Fix __arch_get_hw_counter()
On some MIPS variants (e.g. MIPS r1), vDSO clock_mode is set to VDSO_CLOCK_NONE. When VDSO_CLOCK_NONE is set the expected kernel behavior is to fallback on syscalls. To do that the generic vDSO library expects UULONG_MAX as return value of __arch_get_hw_counter(). Fix __arch_get_hw_counter() on MIPS defining a __VDSO_USE_SYSCALL case that addressed the described scenario. Reported-by: Maxime Bizon <mbizon@freebox.fr> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Tested-by: Maxime Bizon <mbizon@freebox.fr> Signed-off-by: Paul Burton <paulburton@kernel.org> Cc: linux-mips@vger.kernel.org
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/include/asm/vdso/gettimeofday.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
index e78462e8ca2e..b08825531e9f 100644
--- a/arch/mips/include/asm/vdso/gettimeofday.h
+++ b/arch/mips/include/asm/vdso/gettimeofday.h
@@ -24,6 +24,8 @@
#define VDSO_HAS_CLOCK_GETRES 1
+#define __VDSO_USE_SYSCALL ULLONG_MAX
+
#ifdef CONFIG_MIPS_CLOCK_VSYSCALL
static __always_inline long gettimeofday_fallback(
@@ -205,7 +207,7 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode)
break;
#endif
default:
- cycle_now = 0;
+ cycle_now = __VDSO_USE_SYSCALL;
break;
}