All of lore.kernel.org
 help / color / mirror / Atom feed
From: cmetcalf@ezchip.com (Chris Metcalf)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 13/17] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it
Date: Sun, 15 Nov 2015 11:42:11 -0500	[thread overview]
Message-ID: <5648B5E3.3060700@ezchip.com> (raw)
In-Reply-To: <4020288.s2KSidZP6C@wuerfel>

On 11/15/2015 10:18 AM, Arnd Bergmann wrote:
> On Friday 13 November 2015 17:10:44 Arnd Bergmann wrote:
>> On Friday 13 November 2015 07:38:49 Andrew Pinski wrote:
>>> On Fri, Nov 13, 2015 at 7:34 AM, Arnd Bergmann <arnd@arndb.de> wrote:
>>>> On Thursday 12 November 2015 14:47:18 Andreas Schwab wrote:
>>>>> Arnd Bergmann <arnd@arndb.de> writes:
>>>>>
>>>>>> On Thursday 12 November 2015 10:44:55 Andreas Schwab wrote:
>>>>>>> Arnd Bergmann <arnd@arndb.de> writes:
>>>>>>>
>>>>>>>> What do you mean with 32-bit off_t?
>>>>>>> An ABI with 32-bit off_t, ie. all currently implemented 32-bit ABIs.
>>>>>>>
>>>>>>>> Do you mean that glibc emulates a 32-bit off_t on top of the 64-bit
>>>>>>>> __kernel_loff_t?
>>>>>>> Glibc is bridging the user-space ABI to the kernel ABI.
>>>>>> Ok, but why?
>>>>> That's how the ABI is defined right now.  I didn't make that up.
>>>> Ok, I guess it will remain a mystery then.
>>> The biggest question is here is how much compatibility do we want with
>>> other 32bit ABIs?
>>> Do we want off_t to be 32bit or 64bit?
>> I would much prefer off_t to be defined as __kernel_loff_t unconditionally,
>> with no support for _FILE_OFFSET_BITS == 32. This is at least what I had
>> in mind when I wrote the asm-generic/unistd.h header.
>>
>> We should probably find out what happened for the other glibc ports that
>> were implemented for the architectures using this. It's possible that
>> there was a good reason for supporting _FILE_OFFSET_BITS == 32 at the
>> time, but I can't think of one and maybe it is one that is no longer
>> valid.
>>
>> Do you know what x86/x32 does for off_t? Do they also implement both
>> _FILE_OFFSET_BITS == 32 and _FILE_OFFSET_BITS == 64 on top of the
>> 64-bit __kernel_off_t?
> I just did a little bit of digging through glibc history and found that
> Chris Metcalf added the files that are now in
> sysdeps/unix/sysv/linux/generic/wordsize-32/ and that provide the
> implementation for 32-bit off_t in glibc on top of the 64-bit
> __kernel_off_t.
>
> Chris, do you remember what led to that? Do you think we still need
> to have 32-bit off_t on all new architectures, or could we move
> on to making 64-bit off_t the default when adding a port?

I think there are two questions here.  The first is whether glibc will change the
default for _FILE_OFFSET_BITS to be 64.  This has been discussed in the past, e.g.:

https://sourceware.org/ml/libc-alpha/2014-03/msg00351.html

I've added Rich, Paul, Joseph, and Mike to the cc's as they are probably a good
subset of libc-alpha to help comment on these issues.  My sense is that right now,
it wouldn't be possible to add a 32-bit architecture with a non-32-bit default
for _FILE_OFFSET_BITS.  And, obviously, this is why, when I added the tilegx32
APIs to glibc in 2011, I needed to provide _FILE_OFFSET_BITS=32 support.

As to the kernel APIs, certainly tilegx32 only has the stat64 API; I just arranged
that the userspace structures are file-offset-bits-agnostic by using ifdefs to
either put a 64-bit value or a (32-bit-value, 32-bit-pad) in the structure.
See sysdeps/unix/sysv/linux/generic/bits/stat.h for example.  While the
__field64() macro is kind of nasty, it does provide the 32-bit off_t to those
programs that want it without any particular cost elsewhere in the code.

-- 
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com

WARNING: multiple messages have this Message-ID (diff)
From: Chris Metcalf <cmetcalf@ezchip.com>
To: Arnd Bergmann <arnd@arndb.de>, <linux-arm-kernel@lists.infradead.org>
Cc: <bamvor.zhangjian@huawei.com>, Andrew Pinski <pinskia@gmail.com>,
	"Kapoor, Prasun" <Prasun.Kapoor@caviumnetworks.com>,
	Andreas Schwab <schwab@suse.de>,
	Nathan Lynch <Nathan_Lynch@mentor.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Alexander Graf <agraf@suse.de>,
	Alexey Klimov <klimov.linux@gmail.com>, <broonie@kernel.org>,
	Yury Norov <ynorov@caviumnetworks.com>,
	Andrew Pinski <apinski@cavium.com>,
	David Daney <ddaney.cavm@gmail.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Jan Dakinevich <jan.dakinevich@gmail.com>,
	Philipp Tomsich <philipp.tomsich@theobroma-systems.com>,
	Andrey Konovalov <andrey.konovalov@linaro.org>,
	<christoph.muellner@theobroma-systems.com>,
	Mike Frysinger <vapier@gentoo.org>,
	"Joseph S. Myers" <joseph@codesourcery.com>,
	Paul Eggert <eggert@cs.ucla.edu>, Rich Felker <dalias@libc.org>
Subject: Re: [PATCH v6 13/17] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it
Date: Sun, 15 Nov 2015 11:42:11 -0500	[thread overview]
Message-ID: <5648B5E3.3060700@ezchip.com> (raw)
In-Reply-To: <4020288.s2KSidZP6C@wuerfel>

On 11/15/2015 10:18 AM, Arnd Bergmann wrote:
> On Friday 13 November 2015 17:10:44 Arnd Bergmann wrote:
>> On Friday 13 November 2015 07:38:49 Andrew Pinski wrote:
>>> On Fri, Nov 13, 2015 at 7:34 AM, Arnd Bergmann <arnd@arndb.de> wrote:
>>>> On Thursday 12 November 2015 14:47:18 Andreas Schwab wrote:
>>>>> Arnd Bergmann <arnd@arndb.de> writes:
>>>>>
>>>>>> On Thursday 12 November 2015 10:44:55 Andreas Schwab wrote:
>>>>>>> Arnd Bergmann <arnd@arndb.de> writes:
>>>>>>>
>>>>>>>> What do you mean with 32-bit off_t?
>>>>>>> An ABI with 32-bit off_t, ie. all currently implemented 32-bit ABIs.
>>>>>>>
>>>>>>>> Do you mean that glibc emulates a 32-bit off_t on top of the 64-bit
>>>>>>>> __kernel_loff_t?
>>>>>>> Glibc is bridging the user-space ABI to the kernel ABI.
>>>>>> Ok, but why?
>>>>> That's how the ABI is defined right now.  I didn't make that up.
>>>> Ok, I guess it will remain a mystery then.
>>> The biggest question is here is how much compatibility do we want with
>>> other 32bit ABIs?
>>> Do we want off_t to be 32bit or 64bit?
>> I would much prefer off_t to be defined as __kernel_loff_t unconditionally,
>> with no support for _FILE_OFFSET_BITS == 32. This is at least what I had
>> in mind when I wrote the asm-generic/unistd.h header.
>>
>> We should probably find out what happened for the other glibc ports that
>> were implemented for the architectures using this. It's possible that
>> there was a good reason for supporting _FILE_OFFSET_BITS == 32 at the
>> time, but I can't think of one and maybe it is one that is no longer
>> valid.
>>
>> Do you know what x86/x32 does for off_t? Do they also implement both
>> _FILE_OFFSET_BITS == 32 and _FILE_OFFSET_BITS == 64 on top of the
>> 64-bit __kernel_off_t?
> I just did a little bit of digging through glibc history and found that
> Chris Metcalf added the files that are now in
> sysdeps/unix/sysv/linux/generic/wordsize-32/ and that provide the
> implementation for 32-bit off_t in glibc on top of the 64-bit
> __kernel_off_t.
>
> Chris, do you remember what led to that? Do you think we still need
> to have 32-bit off_t on all new architectures, or could we move
> on to making 64-bit off_t the default when adding a port?

I think there are two questions here.  The first is whether glibc will change the
default for _FILE_OFFSET_BITS to be 64.  This has been discussed in the past, e.g.:

https://sourceware.org/ml/libc-alpha/2014-03/msg00351.html

I've added Rich, Paul, Joseph, and Mike to the cc's as they are probably a good
subset of libc-alpha to help comment on these issues.  My sense is that right now,
it wouldn't be possible to add a 32-bit architecture with a non-32-bit default
for _FILE_OFFSET_BITS.  And, obviously, this is why, when I added the tilegx32
APIs to glibc in 2011, I needed to provide _FILE_OFFSET_BITS=32 support.

As to the kernel APIs, certainly tilegx32 only has the stat64 API; I just arranged
that the userspace structures are file-offset-bits-agnostic by using ifdefs to
either put a 64-bit value or a (32-bit-value, 32-bit-pad) in the structure.
See sysdeps/unix/sysv/linux/generic/bits/stat.h for example.  While the
__field64() macro is kind of nasty, it does provide the 32-bit off_t to those
programs that want it without any particular cost elsewhere in the code.

-- 
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com


  reply	other threads:[~2015-11-15 16:42 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-02 23:30 [RFC PATCH v6 00/17] ILP32 for ARM64 Yury Norov
2015-11-02 23:30 ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 01/17] arm64:ilp32: add documentation on the ILP32 ABI " Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-05 14:33   ` Arnd Bergmann
2015-11-05 14:33     ` Arnd Bergmann
2015-11-02 23:30 ` [PATCH v6 02/17] arm64: ensure the kernel is compiled for LP64 Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 03/17] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 04/17] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 05/17] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 06/17] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 07/17] arm64:ilp32: add is_ilp32_compat_{task, thread} and TIF_32BIT_AARCH64 Yury Norov
2015-11-02 23:30   ` [PATCH v6 07/17] arm64:ilp32: add is_ilp32_compat_{task,thread} " Yury Norov
2015-11-02 23:30 ` [PATCH v6 08/17] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 09/17] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 10/17] arm64:ilp32: support core dump generation for ILP32 Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 11/17] ptrace: Allow compat to use the native siginfo Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-05 13:53   ` Arnd Bergmann
2015-11-05 13:53     ` Arnd Bergmann
2015-11-02 23:30 ` [PATCH v6 12/17] ilp32: common 32-bit wrappers Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 13/17] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-05 13:50   ` Arnd Bergmann
2015-11-05 13:50     ` Arnd Bergmann
2015-11-11 17:54   ` Andreas Schwab
2015-11-11 17:54     ` Andreas Schwab
2015-11-11 20:40     ` Arnd Bergmann
2015-11-11 20:40       ` Arnd Bergmann
2015-11-11 23:07       ` Andreas Schwab
2015-11-11 23:07         ` Andreas Schwab
2015-11-11 23:23         ` Arnd Bergmann
2015-11-11 23:23           ` Arnd Bergmann
2015-11-12  8:58           ` Andreas Schwab
2015-11-12  8:58             ` Andreas Schwab
2015-11-12  9:22             ` Arnd Bergmann
2015-11-12  9:22               ` Arnd Bergmann
2015-11-12  9:44               ` Andreas Schwab
2015-11-12  9:44                 ` Andreas Schwab
2015-11-12 13:24                 ` Arnd Bergmann
2015-11-12 13:24                   ` Arnd Bergmann
2015-11-12 13:47                   ` Andreas Schwab
2015-11-12 13:47                     ` Andreas Schwab
2015-11-13 15:34                     ` Arnd Bergmann
2015-11-13 15:34                       ` Arnd Bergmann
2015-11-13 15:38                       ` Andrew Pinski
2015-11-13 15:38                         ` Andrew Pinski
2015-11-13 16:10                         ` Arnd Bergmann
2015-11-13 16:10                           ` Arnd Bergmann
2015-11-15 15:18                           ` Arnd Bergmann
2015-11-15 15:18                             ` Arnd Bergmann
2015-11-15 16:42                             ` Chris Metcalf [this message]
2015-11-15 16:42                               ` Chris Metcalf
2015-11-16 10:16                               ` Joseph Myers
2015-11-16 10:16                                 ` Joseph Myers
2015-11-16 11:00                                 ` Arnd Bergmann
2015-11-16 11:00                                   ` Arnd Bergmann
2015-11-16 11:12                                   ` Joseph Myers
2015-11-16 11:12                                     ` Joseph Myers
2015-11-16 11:40                                     ` Arnd Bergmann
2015-11-16 11:40                                       ` Arnd Bergmann
2015-11-16 12:03                                       ` Joseph Myers
2015-11-16 12:03                                         ` Joseph Myers
2015-11-16 12:12                                         ` Arnd Bergmann
2015-11-16 12:12                                           ` Arnd Bergmann
2015-11-16 12:34                                           ` Joseph Myers
2015-11-16 12:34                                             ` Joseph Myers
2015-11-16 13:15                                             ` Arnd Bergmann
2015-11-16 13:15                                               ` Arnd Bergmann
2015-11-16 13:34                                               ` Andreas Schwab
2015-11-16 13:34                                                 ` Andreas Schwab
2015-11-16 13:54                                                 ` Arnd Bergmann
2015-11-16 13:54                                                   ` Arnd Bergmann
2015-11-02 23:30 ` [PATCH v6 14/17] aarch64: ilp32: use generic stat64 structure Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-05 14:03   ` Arnd Bergmann
2015-11-05 14:03     ` Arnd Bergmann
2015-11-02 23:30 ` [PATCH v6 15/17] arm64:ilp32: use the native siginfo instead of the compat siginfo Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 16/17] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-02 23:30 ` [PATCH v6 17/17] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov
2015-11-02 23:30   ` Yury Norov
2015-11-05 11:36 ` [RFC PATCH v6 00/17] ILP32 for ARM64 Andreas Schwab
2015-11-05 11:36   ` Andreas Schwab
2015-11-05 13:39   ` Andrew Pinski
2015-11-05 13:39     ` Andrew Pinski
2015-11-05 22:18     ` Yury Norov
2015-11-05 22:18       ` Yury Norov
2015-11-09 10:01       ` Andreas Schwab
2015-11-09 10:01         ` Andreas Schwab
2015-11-11  7:16         ` Zhangjian (Bamvor)
2015-11-11  7:16           ` Zhangjian (Bamvor)
2015-11-11  8:44           ` Andreas Schwab
2015-11-11  8:44             ` Andreas Schwab
2015-11-09 13:23       ` Andreas Schwab
2015-11-09 13:23         ` Andreas Schwab
2015-11-09 14:21         ` Arnd Bergmann
2015-11-09 14:21           ` Arnd Bergmann
2015-11-09 14:33           ` Andreas Schwab
2015-11-09 14:33             ` Andreas Schwab
2015-11-09 14:36             ` Arnd Bergmann
2015-11-09 14:36               ` Arnd Bergmann
2015-11-09 14:52               ` pinskia at gmail.com
2015-11-09 14:52                 ` pinskia
2015-11-09 15:50                 ` Yury Norov
2015-11-09 15:50                   ` Yury Norov
2015-11-09 16:04                   ` Yury Norov
2015-11-09 16:04                     ` Yury Norov
2015-12-01 22:55 ` Iosif Harutyunov
2015-12-03 17:05   ` Yury Norov
2015-12-03 17:05     ` Yury Norov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5648B5E3.3060700@ezchip.com \
    --to=cmetcalf@ezchip.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.