From: Yury Norov <ynorov@caviumnetworks.com>
To: <linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <catalin.marinas@arm.com>,
<arnd@arndb.de>, <agraf@suse.de>, <bamvor.zhangjian@huawei.com>
Cc: <yury.norov@gmail.com>, <philipp.tomsich@theobroma-systems.com>,
<apinski@cavium.com>, <christoph.muellner@theobroma-systems.com>,
<klimov.linux@gmail.com>, Yury Norov <ynorov@caviumnetworks.com>
Subject: [PATCH v5 00/23] ILP32 for ARM64
Date: Wed, 30 Sep 2015 01:13:57 +0300 [thread overview]
Message-ID: <1443564860-31208-1-git-send-email-ynorov@caviumnetworks.com> (raw)
V5 reincarnation for ILP32.
This is mostly the same code as Andrew suggested in v3:
https://lkml.org/lkml/2014/9/3/704.
V4 series and discussion:
https://lkml.org/lkml/2015/4/13/691
Discussion on v3 and v4 raised questions and some disagreement in community,
and therefore patches are not accepted till now. In this v5 I tried to avoid any
changes that are not about obvious fixes, so all interface and implementation
questions are still here.
In v5:
- rebased on top of 4.3.0-rc3;
- build fixed if ILP32 enabled without AARCH32;
- PATCH v4 22/24 (use compat for stack_t) dropped because it confuses
debug tools like gdb and strace;
- PATCH v4 20/24 (use compat-syscalls for msgsnd and msgrcv for ILP32)
dropped as breaking tests;
- PATCH v5 22/23 (msgrcv, msgsnd handlers) introduced for proper
handling of msgrcv, msgsnd;
- other minor fixes.
Questions under discussion:
- What for ILP32 on ARM64?
See https://lkml.org/lkml/2015/4/13/814
and http://permalink.gmane.org/gmane.comp.lib.uclibc.buildroot/121100
Briefly,
- for compatibility;
- for performance;
- for memory saving.
- ABI questions: time_t and so on;
I think we are out of choice now. Patches to GCC and Glibc are
upstreamed more than a year ago, and there already might be a code compiled
against existing ABI. At the end, there is no major disagreement, and final
word is after ABI users. And I found no objections from that side.
- Implementation questions: use ILP32 separated table or not, and others;
Code proposed by Andrew works just fine for more than a year,
and it even shows slightly better performance comparing to LP64:
http://permalink.gmane.org/gmane.comp.lib.uclibc.buildroot/121100
So I see no reason to change something except obvious bugs, if found.
Andrew Pinski (18):
arm64: ensure the kernel is compiled for LP64
arm64: rename COMPAT to AARCH32_EL0 in Kconfig
arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0
instead
arm64:ilp32: expose 'kernel_long' as 'long long' for ILP32
arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64
arm64:ilp32: share signal structures between ILP32 and LP64 ABIs
arm64:ilp32: use 64bit syscall-names for ILP32 when passing 64bit
registers
arm64:ilp32: use non-compat syscall names for ILP32 as for LP64
arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)
arm64:ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64
arm64:ilp32: share HWCAP between LP64 and ILP32
arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads
arm64:ilp32: support core dump generation for ILP32
arm64: add support for starting ILP32 (ELFCLASS32) binaries
ptrace: Allow compat to use the native siginfo
arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use
it
arm64:ilp32: use the native siginfo instead of the compat siginfo
arm64:ilp32: add ARM64_ILP32 to Kconfig
Philipp Tomsich (4):
arm64:ilp32: add documentation on the ILP32 ABI for ARM64
arm64:ilp32: COMPAT_USE_64BIT_TIME is true for ILP32 tasks
arm64:ilp32: add vdso-ilp32 and use for signal return
arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for
ILP32
Yury Norov (1):
aarch64: ilp32: msgrcv, msgsnd handlers
Documentation/arm64/ilp32.txt | 64 ++++++
arch/arm64/Kconfig | 14 +-
arch/arm64/Makefile | 6 +-
arch/arm64/include/asm/compat.h | 65 +++++-
arch/arm64/include/asm/elf.h | 105 ++++++++--
arch/arm64/include/asm/fpsimd.h | 2 +-
arch/arm64/include/asm/hwcap.h | 12 +-
arch/arm64/include/asm/memory.h | 2 +-
arch/arm64/include/asm/processor.h | 12 +-
arch/arm64/include/asm/ptrace.h | 2 +-
arch/arm64/include/asm/signal32.h | 2 +
arch/arm64/include/asm/stat.h | 2 +
arch/arm64/include/asm/thread_info.h | 3 +-
arch/arm64/include/asm/unistd.h | 8 +-
arch/arm64/include/asm/vdso.h | 4 +
arch/arm64/include/uapi/asm/bitsperlong.h | 9 +-
arch/arm64/include/uapi/asm/posix_types.h | 12 +-
arch/arm64/include/uapi/asm/siginfo.h | 21 ++
arch/arm64/include/uapi/asm/signal.h | 32 +++
arch/arm64/include/uapi/asm/unistd.h | 7 +
arch/arm64/kernel/Makefile | 8 +-
arch/arm64/kernel/asm-offsets.c | 2 +-
arch/arm64/kernel/entry.S | 18 +-
arch/arm64/kernel/head.S | 2 +-
arch/arm64/kernel/hw_breakpoint.c | 6 +-
arch/arm64/kernel/process.c | 4 +-
arch/arm64/kernel/ptrace.c | 51 +++--
arch/arm64/kernel/signal.c | 23 ++-
arch/arm64/kernel/sys_ilp32.c | 223 +++++++++++++++++++++
arch/arm64/kernel/traps.c | 4 +-
arch/arm64/kernel/vdso-ilp32/.gitignore | 2 +
arch/arm64/kernel/vdso-ilp32/Makefile | 72 +++++++
.../siginfo.h => kernel/vdso-ilp32/vdso-ilp32.S} | 22 +-
arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S | 98 +++++++++
arch/arm64/kernel/vdso.c | 73 +++++--
include/linux/compat.h | 4 +
include/uapi/asm-generic/siginfo.h | 17 +-
include/uapi/asm-generic/signal.h | 27 ++-
include/uapi/asm-generic/unistd.h | 5 +-
kernel/ptrace.c | 24 ++-
40 files changed, 973 insertions(+), 96 deletions(-)
create mode 100644 Documentation/arm64/ilp32.txt
create mode 100644 arch/arm64/kernel/sys_ilp32.c
create mode 100644 arch/arm64/kernel/vdso-ilp32/.gitignore
create mode 100644 arch/arm64/kernel/vdso-ilp32/Makefile
copy arch/arm64/{include/uapi/asm/siginfo.h => kernel/vdso-ilp32/vdso-ilp32.S} (60%)
create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S
--
2.1.4
next reply other threads:[~2015-09-29 22:15 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-29 22:13 Yury Norov [this message]
2015-09-29 22:13 ` [PATCH v5 01/23] arm64:ilp32: add documentation on the ILP32 ABI for ARM64 Yury Norov
2015-09-29 22:13 ` [PATCH v5 02/23] arm64: ensure the kernel is compiled for LP64 Yury Norov
2015-09-29 22:14 ` [PATCH v5 03/23] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov
2015-10-06 9:21 ` Andrey Konovalov
2015-09-29 22:14 ` [PATCH v5 04/23] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov
2015-09-30 3:36 ` kbuild test robot
2015-09-30 5:35 ` kbuild test robot
2015-10-06 9:21 ` Andrey Konovalov
2015-09-29 22:14 ` [PATCH v5 05/23] arm64:ilp32: expose 'kernel_long' as 'long long' for ILP32 Yury Norov
2015-09-29 22:14 ` [PATCH v5 06/23] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov
2015-09-29 22:14 ` [PATCH v5 07/23] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs Yury Norov
2015-09-29 22:14 ` [PATCH v5 08/23] arm64:ilp32: use 64bit syscall-names for ILP32 when passing 64bit registers Yury Norov
2015-09-29 22:14 ` [PATCH v5 09/23] arm64:ilp32: use non-compat syscall names for ILP32 as for LP64 Yury Norov
2015-09-29 22:14 ` [PATCH v5 10/23] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov
2015-09-30 3:48 ` kbuild test robot
2015-10-06 9:21 ` Andrey Konovalov
2015-10-07 16:13 ` Yury Norov
2015-09-29 22:14 ` [PATCH v5 11/23] arm64:ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Yury Norov
2015-09-29 22:14 ` [PATCH v5 12/23] arm64:ilp32: COMPAT_USE_64BIT_TIME is true for ILP32 tasks Yury Norov
2015-09-29 22:14 ` [PATCH v5 13/23] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov
2015-09-29 22:14 ` [PATCH v5 14/23] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov
2015-09-29 22:14 ` [PATCH v5 15/23] arm64:ilp32: support core dump generation for ILP32 Yury Norov
2015-09-29 22:14 ` [PATCH v5 16/23] arm64: add support for starting ILP32 (ELFCLASS32) binaries Yury Norov
2015-09-29 22:14 ` [PATCH v5 17/23] arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov
2015-09-30 4:06 ` Nathan Lynch
2015-10-01 19:44 ` Yury Norov
2015-10-01 19:54 ` Dr. Philipp Tomsich
2015-09-29 22:14 ` [PATCH v5 18/23] ptrace: Allow compat to use the native siginfo Yury Norov
2015-09-29 22:14 ` [PATCH v5 19/23] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov
2015-09-29 22:14 ` [PATCH v5 20/23] arm64:ilp32: use the native siginfo instead of the compat siginfo Yury Norov
2015-09-29 22:14 ` [PATCH v5 21/23] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov
2015-09-29 22:14 ` [PATCH v5 22/23] aarch64: ilp32: msgrcv, msgsnd handlers Yury Norov
2015-09-29 22:14 ` [PATCH v5 23/23] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov
2015-09-30 10:19 ` [PATCH v5 00/23] ILP32 for ARM64 Catalin Marinas
2015-09-30 16:41 ` Mark Brown
2015-10-01 11:19 ` Catalin Marinas
2015-10-01 11:36 ` Mark Brown
2015-10-01 16:42 ` Andrey Konovalov
2015-10-01 19:33 ` Yury Norov
2015-10-01 19:15 ` Yury Norov
2015-10-01 21:28 ` Arnd Bergmann
2015-10-01 21:49 ` Pinski, Andrew
2015-10-02 9:37 ` Catalin Marinas
2015-10-03 2:18 ` Kapoor, Prasun
2015-10-05 15:58 ` Catalin Marinas
2015-10-05 21:00 ` Pinski, Andrew
2015-10-05 19:10 ` 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=1443564860-31208-1-git-send-email-ynorov@caviumnetworks.com \
--to=ynorov@caviumnetworks.com \
--cc=agraf@suse.de \
--cc=apinski@cavium.com \
--cc=arnd@arndb.de \
--cc=bamvor.zhangjian@huawei.com \
--cc=catalin.marinas@arm.com \
--cc=christoph.muellner@theobroma-systems.com \
--cc=klimov.linux@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=philipp.tomsich@theobroma-systems.com \
--cc=yury.norov@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).