All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/23] ILP32 for ARM64
@ 2015-09-29 22:13 ` Yury Norov
  0 siblings, 0 replies; 96+ messages in thread
From: Yury Norov @ 2015-09-29 22:13 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, catalin.marinas, arnd, agraf,
	bamvor.zhangjian
  Cc: yury.norov, philipp.tomsich, apinski, christoph.muellner,
	klimov.linux, Yury Norov

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


^ permalink raw reply	[flat|nested] 96+ messages in thread

end of thread, other threads:[~2015-10-07 16:14 UTC | newest]

Thread overview: 96+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-29 22:13 [PATCH v5 00/23] ILP32 for ARM64 Yury Norov
2015-09-29 22:13 ` Yury Norov
2015-09-29 22:13 ` [PATCH v5 01/23] arm64:ilp32: add documentation on the ILP32 ABI " Yury Norov
2015-09-29 22:13   ` 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:13   ` Yury Norov
2015-09-29 22:14 ` [PATCH v5 03/23] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov
2015-09-29 22:14   ` Yury Norov
2015-10-06  9:21   ` Andrey Konovalov
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-29 22:14   ` Yury Norov
2015-09-30  3:36   ` kbuild test robot
2015-09-30  3:36     ` kbuild test robot
2015-09-30  5:35   ` kbuild test robot
2015-09-30  5:35     ` kbuild test robot
2015-10-06  9:21   ` Andrey Konovalov
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   ` 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   ` 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   ` 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   ` 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   ` 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-29 22:14   ` Yury Norov
2015-09-30  3:48   ` kbuild test robot
2015-09-30  3:48     ` kbuild test robot
2015-10-06  9:21   ` Andrey Konovalov
2015-10-06  9:21     ` Andrey Konovalov
2015-10-07 16:13     ` Yury Norov
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 11/23] arm64:ilp32: add is_ilp32_compat_{task, thread} " 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   ` 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   ` 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   ` 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   ` 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   ` 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-29 22:14   ` Yury Norov
2015-09-30  4:06   ` Nathan Lynch
2015-09-30  4:06     ` Nathan Lynch
2015-10-01 19:44     ` Yury Norov
2015-10-01 19:44       ` Yury Norov
2015-10-01 19:54       ` Dr. Philipp Tomsich
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   ` 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   ` 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   ` 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   ` Yury Norov
2015-09-29 22:14 ` [PATCH v5 22/23] aarch64: ilp32: msgrcv, msgsnd handlers Yury Norov
2015-09-29 22:14   ` Yury Norov
2015-09-29 22:14 ` [PATCH v5 23/23] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov
2015-09-29 22:14   ` Yury Norov
2015-09-30 10:19 ` [PATCH v5 00/23] ILP32 for ARM64 Catalin Marinas
2015-09-30 10:19   ` Catalin Marinas
2015-09-30 16:41   ` Mark Brown
2015-09-30 16:41     ` Mark Brown
2015-10-01 11:19     ` Catalin Marinas
2015-10-01 11:19       ` Catalin Marinas
2015-10-01 11:36       ` Mark Brown
2015-10-01 11:36         ` Mark Brown
2015-10-01 16:42         ` Andrey Konovalov
2015-10-01 16:42           ` Andrey Konovalov
2015-10-01 19:33     ` Yury Norov
2015-10-01 19:33       ` Yury Norov
2015-10-01 19:15   ` Yury Norov
2015-10-01 19:15     ` Yury Norov
2015-10-01 21:28     ` Arnd Bergmann
2015-10-01 21:28       ` Arnd Bergmann
2015-10-01 21:49       ` Pinski, Andrew
2015-10-01 21:49         ` Pinski, Andrew
2015-10-02  9:37         ` Catalin Marinas
2015-10-02  9:37           ` Catalin Marinas
2015-10-03  2:18           ` Kapoor, Prasun
2015-10-03  2:18             ` Kapoor, Prasun
2015-10-05 15:58             ` Catalin Marinas
2015-10-05 15:58               ` Catalin Marinas
2015-10-05 21:00               ` Pinski, Andrew
2015-10-05 21:00                 ` Pinski, Andrew
2015-10-05 19:10         ` Yury Norov
2015-10-05 19:10           ` Yury Norov

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.