Re: [PATCH 00/28] nios2 Linux kernel port

From: Pinski, Andrew
Date: Thu Apr 24 2014 - 14:42:28 EST




> On Apr 24, 2014, at 11:37 AM, "Chung-Lin Tang" <cltang@xxxxxxxxxxxxxxxx> wrote:
>
>> On 2014/4/24 11:28 PM, Catalin Marinas wrote:
>>> On Thu, Apr 24, 2014 at 09:55:25AM +0100, Chung-Lin Tang wrote:
>>>> On 2014/4/24 02:26 PM, Chung-Lin Tang wrote:
>>>>> On 2014/4/24 上午 02:15, Pinski, Andrew wrote:
>>>>>
>>>>>>> On Apr 23, 2014, at 10:59 AM, "Chung-Lin Tang" <cltang@xxxxxxxxxxxxxxxx> wrote:
>>>>>>>
>>>>>>>>> On 2014/4/22 07:20 PM, Ley Foon Tan wrote:
>>>>>>>>> On Tue, Apr 22, 2014 at 6:56 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
>>>>>>>>>>>>> On Tuesday 22 April 2014 18:37:11 Ley Foon Tan wrote:
>>>>>>>>>>>>>>>>> Hi Arnd and Peter Anvin,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Other than 64-bit time_t, clock_t and suseconds_t, can you confirm
>>>>>>>>>>>>>>>>> that we don't need to have 64 bit off_t? See detail in link below.
>>>>>>>>>>>>>>>>> I can submit the patches for 64-bit time changes
>>>>>>>>>>>>>>>>> (include/asm-generic/posix_types.h and other archs) if everyone is
>>>>>>>>>>>>>>>>> agreed on this.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes.
>>>>>>>>> Okay, will doing that.
>>>>>>>
>>>>>>> I believe that arm64 ILP32 will also be affected. What is the status of
>>>>>>> this configuration? Has the glibc/kernel ABI been finalized?
>>>>> Not yet. I am still working out the signal handling part. But we
>>>>> already agreed on 64bit time_t, clock_t, and suseconds_t. And we
>>>>> agreed to a 64bit offset_t too.
>>>>>
>>>>> On a related note suseconds in the timespec in posix is defined to
>>>>> be long. So it would nice if the kernel ignores the upper 32bits so
>>>>> we (glibc developers) can fix this for new targets including x32
>>>>> and arm64/ilp32.
>>>>
>>>> Hmm, but that means for purely 32-bit architectures like nios2, which
>>>> unlike x86_64 or arm64, never has a 64-bit mode, suseconds_t as a 64-bit
>>>> type in the kernel is simply wasted.
>>>
>>> The more I think of this, the more I feel that suseconds_t should jsut
>>> be 'long', not strictly 64-bitified. An ILP32 sub-mode in a 64-bit
>>> kernel should be using compat_* code paths, something like a
>>> COMPAT_USE_32BIT_SUSECONDS case.
>>
>> ILP32 mode should use LP64 syscalls as much as possible and that's the
>> aim with arm64 as well (of course, we still have a few that wouldn't be
>> possible and we route them via compat).
>>
>> But here if time_t is 64-bit while susecconds_t is 32-bit, the compat
>> code wouldn't help.
>
> Why not? You can define the arm64 'struct compat_timeval' with
> suseconds_t as s32, and add the 32<-->64 case in the
> compat_get/put_timeval path, triggered when the process is ILP32 (test
> wrapped in the above hypothetical COMPAT_USE_32BIT_SUSECONDS macro).
> Similar to how x32 does COMPAT_USE_64BIT_TIME.

We would three timeval then. One for aarch32, one for lp64 and one for ilp32. We really don't want three. Two is already one too many in my mind after developing the ilp32 syscall abi.

Thanks,
Andrew


>
> Chung-Lin
>
>
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/