Message ID | 20191016134024.46671-1-vincenzo.frascino@arm.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 8a1bef4193e81c8afae4d2f107f1c09c8ce89470 |
Delegated to: | Paul Burton |
Headers | show |
Series | mips: vdso: Fix __arch_get_hw_counter() | expand |
On Wed, 2019-10-16 at 14:40 +0100, Vincenzo Frascino wrote: > 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> > Cc: Paul Burton <pburton@wavecomp.com> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Tested-by: Maxime Bizon <mbizon@freebox.fr> Thanks,
Hello, Vincenzo Frascino wrote: > 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. Applied to mips-fixes. > commit 8a1bef4193e8 > https://git.kernel.org/mips/c/8a1bef4193e8 > > 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> Thanks, Paul [ This message was auto-generated; if you believe anything is incorrect then please email paulburton@kernel.org to report it. ]
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; }
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> Cc: Paul Burton <pburton@wavecomp.com> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> --- arch/mips/include/asm/vdso/gettimeofday.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)