[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <BF04DB35-9DBA-4297-8FCA-BB422A56DFEC@goldelico.com>
Date: Thu, 28 Nov 2019 17:47:38 +0100
From: "H. Nikolaus Schaller" <hns@...delico.com>
To: Vincenzo Frascino <vincenzo.frascino@....com>
Cc: Thomas Bogendoerfer <tsbogend@...ha.franken.de>,
Maarten ter Huurne <maarten@...ewalker.org>,
mips-creator-ci20-dev@...glegroups.com,
Ralf Baechle <ralf@...ux-mips.org>,
Paul Burton <paul.burton@...s.com>, linux-mips@...r.kernel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Discussions about the Letux Kernel
<letux-kernel@...nphoenux.org>
Subject: Re: MIPS: bug: gettimeofday syscall broken on CI20 board
Hi Vincenzo,
> Am 28.11.2019 um 16:46 schrieb Vincenzo Frascino <vincenzo.frascino@....com>:
>
>
> On 28/11/2019 15:41, H. Nikolaus Schaller wrote:
>>
>>> Am 28.11.2019 um 16:07 schrieb Thomas Bogendoerfer <tsbogend@...ha.franken.de>:
>>>
>>> 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?
>>
>
> I think I know what is going on, it is the way on which libc does the fallback.
> Could you please try the patch below the scissors and let me know if it works?
Well, it does not immediately compile because CONFIG_MIPS_CLOCK_VSYSCALL is not
set and can not be configured by normal means:
Error:
/Volumes/CaseSensitive/master/lib/vdso/gettimeofday.c: In function '__cvdso_gettimeofday':
/Volumes/CaseSensitive/master/lib/vdso/gettimeofday.c:152:4: error: implicit declaration of function 'gettimeofday_fallback' [-Werror=implicit-function-declaration]
return gettimeofday_fallback(tv, tz);
^
So I force-#defined CONFIG_MIPS_CLOCK_VSYSCALL in arch/mips/include/asm/vdso/gettimeofday.h
which is also included by lib/vdso/gettimeofday.c
Yes, it works now! Great!!!
root@...ux:~# ./gettime
r = 0 errno=0
tv.sec = 1574959485
tv.usec = 671306
rt = 1574959485 errno=0
t = 1574959485
root@...ux:~# cat /etc/debian_version
9.11
root@...ux:~# uname -a
Linux letux 5.4.0-letux-l400+ #1490 PREEMPT Thu Nov 28 17:23:32 CET 2019 mips GNU/Linux
root@...ux:~# dhclient
root@...ux:~#
> If it does I will create a proper one.
It needs some mechanism to set CONFIG_MIPS_CLOCK_VSYSCALL.
I'll test if you have something new.
BR and thanks,
Nikolaus
Powered by blists - more mailing lists