Re: MIPS: bug: gettimeofday syscall broken on CI20 board

From: H. Nikolaus Schaller
Date: Thu Nov 28 2019 - 10:42:03 EST



> Am 28.11.2019 um 16:07 schrieb Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>:
>
> On Thu, Nov 28, 2019 at 02:48:46PM +0100, H. Nikolaus Schaller wrote:
>>
>> What still does not fit into the picture is the errno = 1 i.e. EPERM.
>> Maybe I have to study the libc code that tries to read the ELF symbols
>> you have mentioned. It may fail for unknown reasons.
>
> to understand vdso you might look at arch/mips/vdso and lib/vdso
> kernel sources.

Yes that is what I know, but I do not know how glibc can return an EPERM
through VDSO.

>
> And if I understand it correctly you neither have a working high resolution
> timer usable bei do_hres() in lib/vdso/gettimeofday.c or a working
> gettimeofday_fallback(), which is enabled via CONFIG_MIPS_CLOCK_VSYSCALL
> and needs either CSRC_R4K or CLKSRC_MIPS_GIC.

Well, on kernel v4.19 or using v5.4 with Jessie, gettimeofday() works.

So this may only be part of the reason it starts to fail with commit
24640f233b466051ad3a5d2786d2951e43026c9d.

MIPS_CLOCK_VSYSCALL is neither defined nor undefined in the defconfig.
And removed if I manually add it to my defconfig.
And yes, it depends on either CSRC_R4K || CLKSRC_MIPS_GIC by arch/mips/Kconfig.

Maybe this was just forgotten to properly handle for the ci20_defconfig
or jz4780?

What does CSRC_R4K resp. CLKSRC_MIPS_GIC ecactly mean? Does the jz4780 have this
feature?

BR and thanks,
Nikolaus