Re: [patch V2 03/17] lib/vdso: Allow the high resolution parts to be compiled out
From: Vincenzo Frascino
Date: Fri Feb 14 2020 - 06:54:56 EST
On 2/7/20 12:38 PM, Thomas Gleixner wrote:
> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>
> If the architecture knows at compile time that there is no VDSO capable
> clocksource supported it makes sense to optimize the guts of the high
> resolution parts of the VDSO out at build time. Add a helper function to
> check whether the VDSO should be high resolution capable and provide a stub
> which can be overridden by an architecture.
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino@xxxxxxx>
Tested-by: Vincenzo Frascino <vincenzo.frascino@xxxxxxx>
> ---
> lib/vdso/gettimeofday.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> --- a/lib/vdso/gettimeofday.c
> +++ b/lib/vdso/gettimeofday.c
> @@ -38,6 +38,13 @@ u64 vdso_calc_delta(u64 cycles, u64 last
> }
> #endif
>
> +#ifndef __arch_vdso_hres_capable
> +static inline bool __arch_vdso_hres_capable(void)
> +{
> + return true;
> +}
> +#endif
> +
> #ifdef CONFIG_TIME_NS
> static int do_hres_timens(const struct vdso_data *vdns, clockid_t clk,
> struct __kernel_timespec *ts)
> @@ -101,6 +108,10 @@ static __always_inline int do_hres(const
> u64 cycles, last, sec, ns;
> u32 seq;
>
> + /* Allows to compile the high resolution parts out */
> + if (!__arch_vdso_hres_capable())
> + return -1;
> +
> do {
> /*
> * Open coded to handle VCLOCK_TIMENS. Time namespace
>
--
Regards,
Vincenzo