From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it
Date: Wed, 02 Dec 2015 11:03:55 +0100 [thread overview]
Message-ID: <2307165.72VALbNc43@wuerfel> (raw)
In-Reply-To: <20151202002430.GB23156@yury-N73SV>
On Wednesday 02 December 2015 03:24:30 Yury Norov wrote:
> On Tue, Dec 01, 2015 at 12:30:56PM +0100, Arnd Bergmann wrote:
> > On Tuesday 01 December 2015 12:01:12 Andreas Schwab wrote:
> > > Arnd Bergmann <arnd@arndb.de> writes:
> > >
> > > > On Tuesday 01 December 2015 10:20:59 Andreas Schwab wrote:
> > > >> Yury Norov <ynorov@caviumnetworks.com> writes:
> > > >>
> > > >> > There's a tricky bug with signal stack, that Andreas also discovered.
> > > >>
> > > >> That was only a confusion about the compat state of sys_rt_sigaction.
> > > >> It just requires making sure glibc uses the correct (64bit layout)
> > > >> struct kernel_sigaction.
> > > >
> > > > I don't think we need to use the 64-bit version of sigaction, both
> > > > kernel and libc are simpler if we use the normal 32-bit version.
> > >
> > > Since glibc has to do the conversion anyway (due to sigset_t), using the
> > > 64bit layout avoids a second conversion in the kernel.
> >
> > I don't get the part about sigset_t. Why would glibc want to use the
> > 64-bit layout? This one looks like one of the cases where we absolutely
> > want to use the 32-bit layout or otherwise get into big trouble if
> > we ever want to support native ILP32 kernels.
> >
> > Arnd
>
> So, we drop patch #6, and use 32-bit layout for all signal structures.
>
> Correct?
If the 32-bit layout is sane, yes. Andrew can surely judge this better
than I can. The goal should be to have the most straightforward
implementation for both kernel and libc, and reuse either the compat
signal handling or the native one as much as we can.
Looking at the API, I find that ARM fortunately uses all the standard
definitions for sigset_t, struct siginfo/siginfo_t, union sigval/sigval_t,
struct sigaction, struct sigaltstack/stack_t. It took me a while to
figure out that the definitions in the uapi headers are different but
actually unused (probably remaining from libc5 days or earlier).
The signal numbers are all the same, and so are the
The SA_* flags are all the same too, except for SA_THIRTYTWO, but
that is not implemented by the compat handling because we do not
support 26 bit tasks anyway.
struct sigcontext is obviously different because of the changed
register set, and we will have to deal with that in some form in the
compat code. struct ucontext and struct rt_sigframe includes that,
which I assume is the main part we need to handle correctly
by having ilp32 specific setup_rt_frame/sys_rt_sigreturn functions.
One small difference is the handling of MINSIGSTKSZ, which would
currently work for ilp32, but I noticed that commit c9692657c032
("arm64: Fix MINSIGSTKSZ and SIGSTKSZ") from Manjeet Pawar broke
compat mode: Any 32-bit (aarch32) task that passes an altstack smaller
than 5120 bytes now gets rejected by the kernel, whereas the native
32-bit kernel checks for 2048 bytes instead. We need to fix the
existing compat case here without breaking the ilp32 case.
With all that said, I would assume that just having separate
sigcontext/ucontext/rt_sigframe and reusing the compat code otherwise,
we are overall better off than with using the native 64-bit signal
handling with everything that ties in (waitid, epoll_pwait,
signalfd, ppoll, ...), but we can discuss this further if someone
sees major downsides of that compared to your existing approach.
In particular, I don't know what the difference means for gdb,
glibc or strace.
Arnd
next prev parent reply other threads:[~2015-12-02 10:03 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-17 21:16 [RFC2 PATCH v6 00/19] ILP32 for ARM64 Yury Norov
2015-11-17 21:16 ` [PATCH v6 01/19] arm64:ilp32: add documentation on the ILP32 ABI " Yury Norov
2015-11-18 8:09 ` Zhangjian (Bamvor)
2015-11-17 21:16 ` [PATCH v6 02/19] arm64: ensure the kernel is compiled for LP64 Yury Norov
2015-11-17 21:16 ` [PATCH v6 03/19] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov
2015-11-17 21:16 ` [PATCH v6 04/19] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov
2015-12-03 12:02 ` Catalin Marinas
2015-12-04 21:58 ` Yury Norov
2015-11-17 21:16 ` [PATCH v6 05/19] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov
2015-12-03 11:31 ` Catalin Marinas
2015-12-03 11:36 ` Dr. Philipp Tomsich
2015-11-17 21:16 ` [PATCH v6 06/19] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs Yury Norov
2015-11-17 22:14 ` Arnd Bergmann
2015-11-17 21:16 ` [PATCH v6 07/19] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov
2015-12-03 12:13 ` Catalin Marinas
2015-12-04 17:05 ` Yury Norov
2015-12-05 11:00 ` Catalin Marinas
2015-11-17 21:16 ` [PATCH v6 08/19] arm64:ilp32: add is_ilp32_compat_{task, thread} and TIF_32BIT_AARCH64 Yury Norov
2015-11-17 21:16 ` [PATCH v6 09/19] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov
2015-11-17 21:16 ` [PATCH v6 10/19] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov
2015-12-03 12:20 ` Catalin Marinas
2015-11-17 21:16 ` [PATCH v6 11/19] arm64:ilp32: support core dump generation for ILP32 Yury Norov
2015-12-03 16:39 ` Catalin Marinas
2015-11-17 21:16 ` [PATCH v6 12/19] ptrace: Allow compat to use the native siginfo Yury Norov
2015-11-17 21:16 ` [PATCH v6 13/19] arm64: ilp32: common 32-bit wrappers Yury Norov
2015-11-17 21:16 ` [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov
2015-11-17 21:57 ` Arnd Bergmann
2015-11-18 8:14 ` Arnd Bergmann
2015-11-19 13:21 ` Andreas Schwab
2015-11-19 13:32 ` Arnd Bergmann
2015-11-30 15:34 ` Arnd Bergmann
2015-11-30 20:21 ` Yury Norov
2015-11-30 21:49 ` Arnd Bergmann
2015-12-01 0:20 ` Andrew Pinski
2015-12-01 0:40 ` Yury Norov
2015-12-01 10:26 ` Arnd Bergmann
2015-12-01 9:20 ` Andreas Schwab
2015-12-01 10:22 ` Arnd Bergmann
2015-12-01 11:01 ` Andreas Schwab
2015-12-01 11:30 ` Arnd Bergmann
2015-12-02 0:24 ` Yury Norov
2015-12-02 10:03 ` Arnd Bergmann [this message]
2015-12-03 17:17 ` Catalin Marinas
2015-12-01 21:29 ` Yury Norov
2015-12-01 22:39 ` Arnd Bergmann
2015-12-01 23:35 ` Yury Norov
2015-12-02 8:37 ` Arnd Bergmann
2015-12-02 9:15 ` Yury Norov
2015-12-02 10:35 ` Yury Norov
2015-12-02 13:46 ` Arnd Bergmann
2015-12-02 13:54 ` Arnd Bergmann
2015-12-02 13:57 ` Will Deacon
2015-12-03 17:47 ` Catalin Marinas
2015-12-03 18:14 ` Yury Norov
2015-12-03 20:42 ` Arnd Bergmann
2015-12-02 10:01 ` Yury Norov
2015-12-02 11:03 ` Arnd Bergmann
2015-11-17 21:16 ` [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Yury Norov
2015-11-17 22:07 ` Arnd Bergmann
2015-11-18 8:25 ` Andreas Schwab
2015-11-18 9:23 ` Arnd Bergmann
2015-11-18 10:07 ` Geert Uytterhoeven
2015-11-18 12:04 ` Arnd Bergmann
2015-11-17 21:16 ` [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure Yury Norov
2015-11-17 22:09 ` Arnd Bergmann
2015-11-18 20:36 ` Yury Norov
2015-11-18 20:45 ` Arnd Bergmann
2015-11-17 21:16 ` [PATCH v6 17/19] arm64:ilp32: use the native siginfo instead of the compat siginfo Yury Norov
2015-11-17 21:16 ` [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov
2015-11-18 8:11 ` Zhangjian (Bamvor)
2015-11-18 11:21 ` pinskia at gmail.com
2015-11-18 20:25 ` Yury Norov
2015-11-18 21:47 ` Dr. Philipp Tomsich
2015-11-17 21:16 ` [PATCH v6 19/19] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov
2015-11-18 8:00 ` [RFC2 PATCH v6 00/19] ILP32 for ARM64 Zhangjian (Bamvor)
2015-11-23 16:49 ` Andreas Schwab
2015-12-03 17:59 ` Catalin Marinas
2015-12-04 15:35 ` Yury Norov
2015-12-04 17:18 ` Catalin Marinas
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=2307165.72VALbNc43@wuerfel \
--to=arnd@arndb.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox