lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <85ba697d-1a09-f1b0-b6b6-a511a2920f93@c-s.fr>
Date:   Mon, 2 Dec 2019 13:55:55 +0100
From:   Christophe Leroy <christophe.leroy@....fr>
To:     Arnd Bergmann <arnd@...db.de>
Cc:     Allison Randal <allison@...utok.net>,
        linuxppc-dev <linuxppc-dev@...ts.ozlabs.org>,
        Thomas Gleixner <tglx@...utronix.de>,
        Nicholas Piggin <npiggin@...il.com>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Michael Ellerman <mpe@...erman.id.au>,
        Paul Mackerras <paulus@...ba.org>,
        Benjamin Herrenschmidt <benh@...nel.crashing.org>,
        y2038 Mailman List <y2038@...ts.linaro.org>,
        Ben Hutchings <ben.hutchings@...ethink.co.uk>
Subject: Re: [Y2038] [PATCH 07/23] y2038: vdso: powerpc: avoid timespec
 references



Le 27/11/2019 à 12:03, Arnd Bergmann a écrit :
> On Thu, Nov 21, 2019 at 5:25 PM Christophe Leroy
> <christophe.leroy@....fr> wrote:
>> Arnd Bergmann <arnd@...db.de> a écrit :
>>> On Wed, Nov 20, 2019 at 11:43 PM Ben Hutchings
>>> <ben.hutchings@...ethink.co.uk> wrote:
>>>>
>>>> On Fri, 2019-11-08 at 22:07 +0100, Arnd Bergmann wrote:
>>>>> @@ -192,7 +190,7 @@ V_FUNCTION_BEGIN(__kernel_time)
>>>>>        bl      __get_datapage@...al
>>>>>        mr      r9, r3                  /* datapage ptr in r9 */
>>>>>
>>>>> -     lwz     r3,STAMP_XTIME+TSPEC_TV_SEC(r9)
>>>>> +     lwz     r3,STAMP_XTIME_SEC+LOWPART(r9)
>>>>
>>>> "LOWPART" should be "LOPART".
>>>>
>>>
>>> Thanks, fixed both instances in a patch on top now. I considered folding
>>> it into the original patch, but as it's close to the merge window I'd
>>> rather not rebase it, and this way I also give you credit for
>>> finding the bug.
>>
>> Take care, might conflict with
>> https://github.com/linuxppc/linux/commit/5e381d727fe8834ca5a126f510194a7a4ac6dd3a
> 
> Sorry for my late reply. I see this commit and no other variant of it has
> made it into linux-next by now, so I assume this is not getting sent for v5.5
> and it's not stopping me from sending my own pull request.
> 
> Please let me know if I missed something and this will cause problems.
> 
> On a related note: are you still working on the generic lib/vdso support for
> powerpc? Without that, future libc implementations that use 64-bit time_t
> will have to use the slow clock_gettime64 syscall instead of the vdso,
> which has a significant performance impact.

I have left this generic lib/vdso subject aside for the moment, because 
performance is disappointing and its architecture doesn't real fit with 
powerpc ABI.

 From a performance point of view, it is manipulating 64 bits vars where 
is could use 32 bits vars. Of course I understand that y2038 will anyway 
force the use of 64 bits for seconds, but at the time being powerpc32 
VDSO is using 32 bits vars for both secs and ns, it make the difference. 
Also, the generic VDSO is playing too much with data on stacks and 
associated memory read/write/copies, which kills performance on RISC 
processors like powerpc. Inlining do_hres() for instance significantly 
improves that as it allow handling the 'struct __kernel_timespec ts' on 
registers instead of using stack.

Regarding powerpc ABI, the issue is that errors shall be reported by 
setting the SO bit in CR register, and this cannot be done in C.
This means:
- The VDSO entry point must be in ASM and the generic VDSO C function 
must be called from there, it cannot be the VDSO entry point.
- The VDSO fallback (ie the system call) cannot be done from the generic 
VDSO C function, it must be called from the ASM as well.

Last point/question, what's the point in using 64 bits for nanoseconds 
on 32 bits arches ?

Christophe

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ