Hi Marek,
On Tue, Jul 08, 2025 at 05:49:18PM +0200, Marek Szyprowski wrote:
> On 08.07.2025 17:17, Marek Szyprowski wrote:
> > On 01.07.2025 10:58, Thomas Weißschuh wrote:
> >> The internal helpers are effectively using boolean results,
> >> while pretending to use error numbers.
> >>
> >> Switch the return type to bool for more clarity.
> >>
> >> Signed-off-by: Thomas Weißschuh <[email protected]>
> >> ---
> >> lib/vdso/gettimeofday.c | 58
> >> +++++++++++++++++++++++++------------------------
> >> 1 file changed, 30 insertions(+), 28 deletions(-)
> >
> > This patch landed in today's linux-next as commit fcc8e46f768f
> > ("vdso/gettimeofday: Return bool from clock_gettime() helpers"). In my
> > tests I found that it causes serious problem with hwclock operation on
> > some of my ARM 32bit test boards. I observe that calling "hwclock -w
> > -f /dev/rtc0" never ends on those boards. Disabling vdso support (by
> > removing ARM architected timer) fixes this issue.
>
> I spent some time analyzing the code refactored in this patch and it
> looks that the following change is missing:
Thanks for the report and investigation!
> diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
> index c5266532a097..7e79b02839b0 100644
> --- a/lib/vdso/gettimeofday.c
> +++ b/lib/vdso/gettimeofday.c
> @@ -344,7 +344,7 @@ __cvdso_gettimeofday_data(const struct
> vdso_time_data *vd,
> if (likely(tv != NULL)) {
> struct __kernel_timespec ts;
>
> - if (do_hres(vd, &vc[CS_HRES_COARSE], CLOCK_REALTIME, &ts))
> + if (!do_hres(vd, &vc[CS_HRES_COARSE], CLOCK_REALTIME, &ts))
> return gettimeofday_fallback(tv, tz);
>
> tv->tv_sec = ts.tv_sec;
>
>
> In my tests this fixed the hwclock issue on the mentioned boards.
This fix looks correct to me.
tglx:
Are you going to fold the fix into the commit or do you want a proper patch?
Marek:
If a new patch is required, do you want to send it? You found and fixed the
issue after all. If not, I'll take care of it.
Thomas