Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1271664 > unrolled thread

[RFC2 PATCH v6 00/19] ILP32 for ARM64

Started byYury Norov <ynorov@caviumnetworks.com>
First post2015-11-17 22:20 +0100
Last post2015-11-23 17:50 +0100
Articles 10 on this page of 30 — 7 participants

Back to article view | Back to linux.kernel


Contents

  [RFC2 PATCH v6 00/19] ILP32 for ARM64 Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:20 +0100
    [PATCH v6 10/19] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 12/19] ptrace: Allow compat to use the native siginfo Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 19/19] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 13/19] arm64: ilp32: common 32-bit wrappers Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
      Re: [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Arnd Bergmann <arnd@arndb.de> - 2015-11-17 23:10 +0100
        Re: [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Andreas Schwab <schwab@suse.de> - 2015-11-18 09:30 +0100
          Re: [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Arnd Bergmann <arnd@arndb.de> - 2015-11-18 10:30 +0100
            Re: [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-18 11:10 +0100
              Re: [PATCH v6 15/19] arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl Arnd Bergmann <arnd@arndb.de> - 2015-11-18 13:10 +0100
    [PATCH v6 17/19] arm64:ilp32: use the native siginfo instead of the compat siginfo Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 09/19] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
      Re: [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-11-17 23:10 +0100
        Re: [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-11-18 09:20 +0100
        Re: [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Andreas Schwab <schwab@suse.de> - 2015-11-19 14:30 +0100
          Re: [PATCH v6 14/19] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-11-19 14:40 +0100
    [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
      Re: [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure Arnd Bergmann <arnd@arndb.de> - 2015-11-17 23:20 +0100
        Re: [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure Arnd Bergmann <arnd@arndb.de> - 2015-11-18 22:00 +0100
    [PATCH v6 11/19] arm64:ilp32: support core dump generation for ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-11-17 22:30 +0100
    Re: [PATCH v6 06/19] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs Arnd Bergmann <arnd@arndb.de> - 2015-11-17 23:20 +0100
    Re: [RFC2 PATCH v6 00/19] ILP32 for ARM64 "Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com> - 2015-11-18 09:10 +0100
    Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report  a a subplatform for ILP32 "Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com> - 2015-11-18 09:20 +0100
      Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 pinskia@gmail.com - 2015-11-18 12:30 +0100
        Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to  report a a subplatform for ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-11-18 21:30 +0100
          Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 "Dr. Philipp Tomsich" <philipp.tomsich@theobroma-systems.com> - 2015-11-18 23:10 +0100
    Re: [PATCH v6 01/19] arm64:ilp32: add documentation on the ILP32  ABI for ARM64 "Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com> - 2015-11-18 09:20 +0100
    Re: [RFC2 PATCH v6 00/19] ILP32 for ARM64 Andreas Schwab <schwab@suse.de> - 2015-11-23 17:50 +0100

Page 2 of 2 — ← Prev page 1 [2]


#1272570 — Re: [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure

FromArnd Bergmann <arnd@arndb.de>
Date2015-11-18 22:00 +0100
SubjectRe: [PATCH v6 16/19] aarch64: ilp32: use generic stat64 structure
Message-ID<qwhZE-8au-17@gated-at.bofh.it>
In reply to#1271700
On Wednesday 18 November 2015 23:36:20 Yury Norov wrote:
> On Tue, Nov 17, 2015 at 11:09:05PM +0100, Arnd Bergmann wrote:
> > On Wednesday 18 November 2015 00:16:56 Yury Norov wrote:
> > > Generic 32-bit and AARCH32 stat64 structures has same names.
> > > ILP32 needs generic stat64. So we can either make ILP32 mutual
> > > exclusive with AARCH32, or duplicate generic cp_new_stat64 code
> > > and struct stat64 to sys_ilp32.c. We choose second because it's
> > > more flexible to have independend support for ABIs.
> > > 
> > 
> > I commented on the previous version, but you have not replied to that,
> > or changed anything.
> > 
> > 	Arnd
> 
> Hi Arnd,
> 
> It seems I misunderstood you.
> 
> Are you OK if we'll enable __ARCH_WANT_COMPAT_STAT64
> for ILP32, as for AARCH32_EL0, and turn glibc to use
> struct stat from sysdeps/unix/sysv/linux/bits/stat.h
> with this calls? It seems, this is how ARM ABI works.

Yes, that's fine. The other approach I suggested was to define a stat64
structure in arch/arm64/include/uapi/asm/stat.h that has the same binary
layout as 'struct stat' on arm64, and then use sys_newstat.

We are doing it that way in the 64-bit time_t patch set for most
architectures, and will assign a new system call number at that
point as well.

The only two differences between the arm32 'struct stat64' and the
arm64 'struct stat' are the size of the time members and the broken
__st_ino field on arm32, but that is already handled in glibc.

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

[toc] | [prev] | [next] | [standalone]


#1271679 — [PATCH v6 11/19] arm64:ilp32: support core dump generation for ILP32

FromYury Norov <ynorov@caviumnetworks.com>
Date2015-11-17 22:30 +0100
Subject[PATCH v6 11/19] arm64:ilp32: support core dump generation for ILP32
Message-ID<qvVZ9-20O-65@gated-at.bofh.it>
In reply to#1271664
From: Andrew Pinski <apinski@cavium.com>

This patch supports core dumping on ILP32.
We need a few extra macros (COMPAT_PR_REG_SIZE and COMPAT_PRSTATUS_SIZE) due
to size differences of the register sets.

Reviewed-by: David Daney <ddaney@caviumnetworks.com>

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
Signed-off-by: Andrew Pinski <Andrew.Pinski@caviumnetworks.com>
---
 arch/arm64/include/asm/elf.h | 87 ++++++++++++++++++++++++++++++++++++++------
 arch/arm64/kernel/ptrace.c   | 12 +++---
 arch/arm64/kernel/vdso.c     |  8 ++++
 3 files changed, 89 insertions(+), 18 deletions(-)

diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
index 01e032c..8f13dac 100644
--- a/arch/arm64/include/asm/elf.h
+++ b/arch/arm64/include/asm/elf.h
@@ -134,7 +134,11 @@ typedef struct user_fpsimd_state elf_fpregset_t;
  */
 #define ELF_PLAT_INIT(_r, load_addr)	(_r)->regs[0] = 0
 
-#define SET_PERSONALITY(ex)		clear_thread_flag(TIF_32BIT);
+#define SET_PERSONALITY(ex)			\
+do {						\
+	clear_thread_flag(TIF_32BIT_AARCH64);	\
+	clear_thread_flag(TIF_32BIT);		\
+} while (0)
 
 #define ARCH_DLINFO							\
 do {									\
@@ -166,12 +170,15 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
 
 #define COMPAT_ELF_ET_DYN_BASE		(2 * TASK_SIZE_32 / 3)
 
+extern int aarch32_setup_vectors_page(struct linux_binprm *bprm,
+				      int uses_interp);
+
 #ifdef CONFIG_AARCH32_EL0
 
 /* AArch32 registers. */
 #define COMPAT_A32_ELF_NGREG		18
-typedef unsigned int			compat_elf_greg_t;
-typedef compat_elf_greg_t		compat_elf_gregset_t[COMPAT_A32_ELF_NGREG];
+typedef unsigned int			compat_a32_elf_greg_t;
+typedef compat_a32_elf_greg_t		compat_a32_elf_gregset_t[COMPAT_A32_ELF_NGREG];
 
 /* AArch32 EABI. */
 #define EF_ARM_EABI_MASK		0xff000000
@@ -179,24 +186,80 @@ typedef compat_elf_greg_t		compat_elf_gregset_t[COMPAT_A32_ELF_NGREG];
 					 ((x)->e_flags & EF_ARM_EABI_MASK))
 
 #define compat_start_thread		compat_start_thread
-#define COMPAT_SET_PERSONALITY(ex)	set_thread_flag(TIF_32BIT);
-#define COMPAT_ARCH_DLINFO
-extern int aarch32_setup_vectors_page(struct linux_binprm *bprm,
-				      int uses_interp);
-#define compat_arch_setup_additional_pages \
-					aarch32_setup_vectors_page
+#define COMPAT_A32_SET_PERSONALITY(ex)		\
+do {						\
+	clear_thread_flag(TIF_32BIT_AARCH64);	\
+	set_thread_flag(TIF_32BIT);		\
+} while (0)
+#define COMPAT_A32_ARCH_DLINFO		do {} while (0)
 
 #else
 
 typedef elf_greg_t			compat_elf_greg_t;
 typedef elf_gregset_t			compat_elf_gregset_t;
 #define compat_a32_elf_check_arch(x)	0
-#define COMPAT_SET_PERSONALITY(ex)
-#define COMPAT_ARCH_DLINFO
+#define COMPAT_A32_SET_PERSONALITY(ex)	do {} while (0)
+#define COMPAT_A32_ARCH_DLINFO		do {} while (0)
+#endif
+
+/* If ILP32 is turned on, we want to define the compat_elf_greg_t to the non compat
+   one and define PR_REG_SIZE/PRSTATUS_SIZE/SET_PR_FPVALID so we pick up the correct
+   ones for AARCH32. Note also the definition of the macros have to be correct for
+   LP64 as this file is included in the standard binfmt_elf.c. */
+#ifdef CONFIG_ARM64_ILP32
+typedef elf_greg_t			compat_elf_greg_t;
+typedef elf_gregset_t			compat_elf_gregset_t;
+#define PR_REG_SIZE(S)			(is_a32_compat_task() ? 72 : 272)
+#define PRSTATUS_SIZE(S)		(is_a32_compat_task() ? 124 : (is_ilp32_compat_task() ? 352 : 392))
+#define SET_PR_FPVALID(S, V)							\
+do {										\
+	*(int *) (((void *) &((S)->pr_reg)) + PR_REG_SIZE((S)->pr_reg)) = (V);	\
+} while (0)
+#else
+typedef compat_a32_elf_greg_t compat_elf_greg_t;
+typedef compat_a32_elf_gregset_t compat_elf_gregset_t;
+#endif
 
+#ifdef CONFIG_ARM64_ILP32
+#define compat_ilp32_elf_check_arch(x) ((x)->e_machine == EM_AARCH64)
+#define COMPAT_ILP32_SET_PERSONALITY(ex)	\
+do {						\
+	set_thread_flag(TIF_32BIT_AARCH64);	\
+	clear_thread_flag(TIF_32BIT);		\
+} while (0)
+#define COMPAT_ILP32_ARCH_DLINFO					\
+do {									\
+	NEW_AUX_ENT(AT_SYSINFO_EHDR,					\
+		    (elf_addr_t)(long)current->mm->context.vdso);	\
+} while (0)
+#else
+#define compat_ilp32_elf_check_arch(x) 0
+#define COMPAT_ILP32_SET_PERSONALITY(ex)	do {} while (0)
+#define COMPAT_ILP32_ARCH_DLINFO		do {} while (0)
 #endif
 
-#define compat_elf_check_arch(x)	compat_a32_elf_check_arch(x)
+#define compat_elf_check_arch(x)	(compat_a32_elf_check_arch(x) || compat_ilp32_elf_check_arch(x))
+#define COMPAT_SET_PERSONALITY(ex)			\
+do {							\
+	if (compat_a32_elf_check_arch(&ex))		\
+		COMPAT_A32_SET_PERSONALITY(ex);		\
+	else						\
+		COMPAT_ILP32_SET_PERSONALITY(ex);	\
+} while (0)
+
+/* ILP32 uses the "LP64-like" vdso pages */
+#define compat_arch_setup_additional_pages	\
+	(is_a32_compat_task()			\
+	 ? &aarch32_setup_vectors_page		\
+	 : &(arch_setup_additional_pages))
+
+#define COMPAT_ARCH_DLINFO			\
+do {						\
+	if (is_a32_compat_task())		\
+		COMPAT_A32_ARCH_DLINFO;		\
+	else					\
+		COMPAT_ILP32_ARCH_DLINFO;	\
+} while (0)
 
 #endif /* CONFIG_COMPAT */
 
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index d2e428c..22d0d5e 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -854,8 +854,8 @@ static const struct user_regset aarch32_regsets[] = {
 	[REGSET_COMPAT_GPR] = {
 		.core_note_type = NT_PRSTATUS,
 		.n = COMPAT_A32_ELF_NGREG,
-		.size = sizeof(compat_elf_greg_t),
-		.align = sizeof(compat_elf_greg_t),
+		.size = sizeof(compat_a32_elf_greg_t),
+		.align = sizeof(compat_a32_elf_greg_t),
 		.get = compat_gpr_get,
 		.set = compat_gpr_set
 	},
@@ -946,7 +946,7 @@ static int compat_ptrace_read_user(struct task_struct *tsk, compat_ulong_t off,
 		tmp = tsk->mm->start_data;
 	else if (off == COMPAT_PT_TEXT_END_ADDR)
 		tmp = tsk->mm->end_code;
-	else if (off < sizeof(compat_elf_gregset_t))
+	else if (off < sizeof(compat_a32_elf_gregset_t))
 		return copy_regset_to_user(tsk, &user_aarch32_view,
 					   REGSET_COMPAT_GPR, off,
 					   sizeof(compat_ulong_t), ret);
@@ -967,7 +967,7 @@ static int compat_ptrace_write_user(struct task_struct *tsk, compat_ulong_t off,
 	if (off & 3 || off >= COMPAT_USER_SZ)
 		return -EIO;
 
-	if (off >= sizeof(compat_elf_gregset_t))
+	if (off >= sizeof(compat_a32_elf_gregset_t))
 		return 0;
 
 	set_fs(KERNEL_DS);
@@ -1130,7 +1130,7 @@ long compat_a32_arch_ptrace(struct task_struct *child, compat_long_t request,
 			ret = copy_regset_to_user(child,
 						  &user_aarch32_view,
 						  REGSET_COMPAT_GPR,
-						  0, sizeof(compat_elf_gregset_t),
+						  0, sizeof(compat_a32_elf_gregset_t),
 						  datap);
 			break;
 
@@ -1138,7 +1138,7 @@ long compat_a32_arch_ptrace(struct task_struct *child, compat_long_t request,
 			ret = copy_regset_from_user(child,
 						    &user_aarch32_view,
 						    REGSET_COMPAT_GPR,
-						    0, sizeof(compat_elf_gregset_t),
+						    0, sizeof(compat_a32_elf_gregset_t),
 						    datap);
 			break;
 
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
index 26352a6..b239b9b 100644
--- a/arch/arm64/kernel/vdso.c
+++ b/arch/arm64/kernel/vdso.c
@@ -107,6 +107,14 @@ int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp)
 
 	return PTR_ERR_OR_ZERO(ret);
 }
+#else
+int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp)
+{
+	(void) bprm;
+	(void) uses_interp;
+
+	return -EINVAL;
+}
 #endif /* CONFIG_AARCH32_EL0 */
 
 static struct vm_special_mapping vdso_spec[2];
-- 
2.1.4

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

[toc] | [prev] | [next] | [standalone]


#1271701 — Re: [PATCH v6 06/19] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs

FromArnd Bergmann <arnd@arndb.de>
Date2015-11-17 23:20 +0100
SubjectRe: [PATCH v6 06/19] arm64:ilp32: share signal structures between ILP32 and LP64 ABIs
Message-ID<qvWLw-2zc-19@gated-at.bofh.it>
In reply to#1271664
On Wednesday 18 November 2015 00:16:46 Yury Norov wrote:
> 
> +/* For ILP32, sigset should be the same size fields as LP64 so use
> +   unsigned long long. */
> +#ifdef __ILP32__
> +#define __SIGSET_INNER_TYPE __extension__ unsigned long long
> +#define _NSIG_BPW 64
> +
> +# ifdef __AARCH64EB__
> +#  define __SIGNAL_INNER(type, field)          \
> +       __extension__ struct {                  \
> +               int __pad_##field;              \
> +               type field;                     \
> +       } __attribute__((aligned(8)))
> +# else
> +#  define __SIGNAL_INNER(type, field)          \
> +       __extension__ struct {                  \
> +               type field;                     \
> +               int __pad_##field;              \
> +       } __attribute__((aligned(8)))
> +# endif
> +
> +# define __SIGACTION_HANDLER(field)            \
> +       __SIGNAL_INNER(__sighandler_t, field)
> +
> +#define __SIGACTION_FLAGS(field)               \
> +       __extension__ unsigned long long field
> +
> +#define __SIGACTION_RESTORER(field)            \
> +       __SIGNAL_INNER(__sigrestore_t, field)
> +
> +#endif

Ah, I missed that in the comments for patch 14. I would think that
it makes sense to share siginfo_t with the 64-bit version, when the
normal compat_siginfo_t doesn't work, but I see no point in
changing compat_sigset_t: There is nothing architecture specific
in that, so you can just use the arm32 version of that, which simplifies
both the kernel and libc sides.

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

[toc] | [prev] | [next] | [standalone]


#1271905

From"Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com>
Date2015-11-18 09:10 +0100
Message-ID<qw5Yu-fd-11@gated-at.bofh.it>
In reply to#1271664
Hi, Yury

Glad to see the new version of ilp32. Here is some general questions:

On 2015/11/18 5:16, Yury Norov wrote:
> ------8<-----
> Colleagues, I'm gonna to send it to list.
> Please, take a look.
> ------8<-----
> 
> This is still RFC because ~20 tests still fail,
> and because it's based on 4.3 kernel version, and
> some work is needed to rebase on 4.4. I'd preffer
> to do it later. 
> 
> v3: https://lkml.org/lkml/2014/9/3/704
> v4: https://lkml.org/lkml/2015/4/13/691
> v5: https://lkml.org/lkml/2015/9/29/911
> 
> v6:
>  - time_t, __kenel_off_t and other types turned to be 32-bit
>    for compatibility reasons (after v5 discussion);
Is there any performance comparison between v6 and v5, especially for
these changes? Compatibility is important for us, meanwhile we need to
take performance into account.
>  - related changes applied to ILP32 syscall table and handlers;
>  - ILP32 VDSO code excluded. It's not mandatory, and caused questions
>    during review process. We definitely make sure we will follow up
>    with a VDSO later on because it is needed for performance reasons;
>  - fixed build issues with different combinations of AARCH32 / ILP32
>    enabling in config;
>  - ILP32 TLS bug fixed;
>  - entry32-common.S introduced to hold wrappers needed for both ILP32
>    and AARCH32_EL0;
>  - documentation updated according to latest changes;
>  - rebased to the current head;
>  - coding style re-checked;
>  - ILP32 syscall table turned around.
> 
> Testing is performed using LTP with scenario 'ltplite'.
> Tested on QEMU + vanilla defconfig kernel.
Do you tested on both big endian and little endian?

Regards

Bamvor
> Regressions are mostly related to core dump genereation,
> readdir(), and futex(). Some tests fail both in ILP32, and LP64.
> 
> The full regression table is:
> 		ILP32		LP64
> 
> float_bessel    FAIL	 134    PASSED	0
> float_exp_log   FAIL	 134    PASSED	0
> float_iperb     FAIL	 134    PASSED	0
> float_power     FAIL	 134    PASSED	0
> float_trigo     FAIL	 134    PASSED	0
> abort01         FAIL       2    FAIL 	2
> fcntl14         FAIL       2    FAIL 	2
> kill11          FAIL       2    FAIL 	2
> mmap16          FAIL       6    PASSED	0
> open12          FAIL       2    PASSED	0
> pause01         PASSED     0    FAIL 	9
> pipe07          FAIL       2    PASSED	0
> readdir01       FAIL       1    PASSED	0
> rename11        FAIL       2    PASSED	0
> rmdir02         FAIL       2    PASSED	0
> setregid02      FAIL       1    FAIL 	1
> settimeofday01  FAIL       1    FAIL 	1
> umount2_01      FAIL       2    PASSED	0
> umount2_02      FAIL       2    PASSED	0
> umount2_03      FAIL       2    PASSED	0
> utime06         FAIL       2    PASSED	0
> 
> Kernel with this patchset, and corresponding
> version of glibc is here:
> https://github.com/norov/
> 
> Andrew Pinski (14):
>   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:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64
>   arm64:ilp32: share signal structures between ILP32 and LP64 ABIs
>   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
>   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
> 
> Jan Dakinevich (2):
>   ilp32: common 32-bit wrappers
>   arm64: ilp32: force IPC_64 in msgctl, shmctl, semctl
> 
> Philipp Tomsich (2):
>   arm64:ilp32: add documentation on the ILP32 ABI for ARM64
>   arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for
>     ILP32
> 
> Yury Norov (1):
>   aarch64: ilp32: use generic stat64 structure
> 
>  Documentation/arm64/ilp32.txt             |  47 +++++++
>  arch/arm64/Kconfig                        |  12 ++
>  arch/arm64/Makefile                       |   5 +
>  arch/arm64/include/asm/compat.h           |  70 +++++++++-
>  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        |  18 ++-
>  arch/arm64/include/asm/ptrace.h           |   2 +-
>  arch/arm64/include/asm/signal32.h         |  19 +++
>  arch/arm64/include/asm/stat.h             |   2 +
>  arch/arm64/include/asm/thread_info.h      |   3 +-
>  arch/arm64/include/asm/unistd.h           |  11 +-
>  arch/arm64/include/uapi/asm/bitsperlong.h |   9 +-
>  arch/arm64/include/uapi/asm/siginfo.h     |  21 +++
>  arch/arm64/include/uapi/asm/signal.h      |  31 +++++
>  arch/arm64/kernel/Makefile                |   4 +-
>  arch/arm64/kernel/asm-offsets.c           |   2 +-
>  arch/arm64/kernel/entry.S                 |  18 ++-
>  arch/arm64/kernel/entry32-common.S        |  37 +++++
>  arch/arm64/kernel/entry32.S               |  29 ----
>  arch/arm64/kernel/head.S                  |   2 +-
>  arch/arm64/kernel/hw_breakpoint.c         |   7 +-
>  arch/arm64/kernel/perf_regs.c             |   2 +-
>  arch/arm64/kernel/process.c               |   4 +-
>  arch/arm64/kernel/ptrace.c                |  47 ++++---
>  arch/arm64/kernel/signal.c                |  21 ++-
>  arch/arm64/kernel/sys_ilp32.c             | 223 ++++++++++++++++++++++++++++++
>  arch/arm64/kernel/traps.c                 |   4 +-
>  arch/arm64/kernel/vdso.c                  |  12 +-
>  include/linux/compat.h                    |   4 +
>  include/uapi/asm-generic/siginfo.h        |  17 ++-
>  include/uapi/asm-generic/signal.h         |  27 +++-
>  kernel/ptrace.c                           |  24 +++-
>  35 files changed, 745 insertions(+), 110 deletions(-)
>  create mode 100644 Documentation/arm64/ilp32.txt
>  create mode 100644 arch/arm64/kernel/entry32-common.S
>  create mode 100644 arch/arm64/kernel/sys_ilp32.c
> 

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

[toc] | [prev] | [next] | [standalone]


#1271911 — Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32

From"Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com>
Date2015-11-18 09:20 +0100
SubjectRe: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32
Message-ID<qw68a-jO-13@gated-at.bofh.it>
In reply to#1271664
Hi, Yury

On 2015/11/18 5:16, Yury Norov wrote:
> From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> 
> To make life for tools (such as gdb) easier when dealing with ILP32 processes,
> we report a proper subarchitecture for ILP32 in the ELF auxiliary vectors.
I saw some ilp32 relative patches in binutils mailing list. Does gdb
fully support ilp32?

Regards

Bamvor

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

[toc] | [prev] | [next] | [standalone]


#1272102 — Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32

Frompinskia@gmail.com
Date2015-11-18 12:30 +0100
SubjectRe: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32
Message-ID<qw962-2d7-19@gated-at.bofh.it>
In reply to#1271911

> On Nov 18, 2015, at 12:11 AM, Zhangjian (Bamvor) <bamvor.zhangjian@huawei.com> wrote:
> 
> Hi, Yury
> 
>> On 2015/11/18 5:16, Yury Norov wrote:
>> From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
>> 
>> To make life for tools (such as gdb) easier when dealing with ILP32 processes,
>> we report a proper subarchitecture for ILP32 in the ELF auxiliary vectors.
> I saw some ilp32 relative patches in binutils mailing list. Does gdb
> fully support ilp32?

I have a patch set but I have not tested them with the latest kernel patch set yet. The branch is located in the binutils-gdb git is https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/pinskia/gdb-aarch64-ilp32 .
I think it will mostly work except for core support might need to be changed slightly. 

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

[toc] | [prev] | [next] | [standalone]


#1272537 — Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32

FromYury Norov <ynorov@caviumnetworks.com>
Date2015-11-18 21:30 +0100
SubjectRe: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32
Message-ID<qwhwC-7V2-21@gated-at.bofh.it>
In reply to#1272102
On Wed, Nov 18, 2015 at 03:21:05AM -0800, pinskia@gmail.com wrote:
> 
> 
> > On Nov 18, 2015, at 12:11 AM, Zhangjian (Bamvor) <bamvor.zhangjian@huawei.com> wrote:
> > 
> > Hi, Yury
> > 
> >> On 2015/11/18 5:16, Yury Norov wrote:
> >> From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> >> 
> >> To make life for tools (such as gdb) easier when dealing with ILP32 processes,
> >> we report a proper subarchitecture for ILP32 in the ELF auxiliary vectors.
> > I saw some ilp32 relative patches in binutils mailing list. Does gdb
> > fully support ilp32?
> 
> I have a patch set but I have not tested them with the latest kernel patch set yet. The branch is located in the binutils-gdb git is https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/pinskia/gdb-aarch64-ilp32 .
> I think it will mostly work except for core support might need to be changed slightly. 
> 
> Thanks,
> Andrew
> > 

Yes, it works mostly. I can read and modify text/data, set breakpoints
etc.

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

[toc] | [prev] | [next] | [standalone]


#1272614 — Re: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32

From"Dr. Philipp Tomsich" <philipp.tomsich@theobroma-systems.com>
Date2015-11-18 23:10 +0100
SubjectRe: [PATCH v6 18/19] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32
Message-ID<qwj5o-Ff-1@gated-at.bofh.it>
In reply to#1272537
Yury,

We had implemented gdb-support against the the earlier ILP32 incarnation.
I’ll take a look with the latest patch-set and see whether these still apply.

Best,
Philipp.

> On 18 Nov 2015, at 21:25, Yury Norov <ynorov@caviumnetworks.com> wrote:
> 
> On Wed, Nov 18, 2015 at 03:21:05AM -0800, pinskia@gmail.com wrote:
>> 
>> 
>>> On Nov 18, 2015, at 12:11 AM, Zhangjian (Bamvor) <bamvor.zhangjian@huawei.com> wrote:
>>> 
>>> Hi, Yury
>>> 
>>>> On 2015/11/18 5:16, Yury Norov wrote:
>>>> From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
>>>> 
>>>> To make life for tools (such as gdb) easier when dealing with ILP32 processes,
>>>> we report a proper subarchitecture for ILP32 in the ELF auxiliary vectors.
>>> I saw some ilp32 relative patches in binutils mailing list. Does gdb
>>> fully support ilp32?
>> 
>> I have a patch set but I have not tested them with the latest kernel patch set yet. The branch is located in the binutils-gdb git is https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/pinskia/gdb-aarch64-ilp32 .
>> I think it will mostly work except for core support might need to be changed slightly. 
>> 
>> Thanks,
>> Andrew
>>> 
> 
> Yes, it works mostly. I can read and modify text/data, set breakpoints
> etc.
> 
>>> Regards
>>> 
>>> Bamvor
>>> 

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

[toc] | [prev] | [next] | [standalone]


#1271918 — Re: [PATCH v6 01/19] arm64:ilp32: add documentation on the ILP32 ABI for ARM64

From"Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com>
Date2015-11-18 09:20 +0100
SubjectRe: [PATCH v6 01/19] arm64:ilp32: add documentation on the ILP32 ABI for ARM64
Message-ID<qw68a-jO-33@gated-at.bofh.it>
In reply to#1271664
Hi, Yury

On 2015/11/18 5:16, Yury Norov wrote:
> From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> 
> Based on Andrew Pinski's original patch-series and adapted with changes
> to reduce the duplication of code-paths and resolve issue found during
> LTP testing.
> 
> Reviewed-by: David Daney <ddaney@caviumnetworks.com>
> 
> 
> Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
> Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
> Signed-off-by: Andrew Pinski <Andrew.Pinski@caviumnetworks.com>
> ---
>  Documentation/arm64/ilp32.txt | 47 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>  create mode 100644 Documentation/arm64/ilp32.txt
> 
> diff --git a/Documentation/arm64/ilp32.txt b/Documentation/arm64/ilp32.txt
> new file mode 100644
> index 0000000..93c09f2
> --- /dev/null
> +++ b/Documentation/arm64/ilp32.txt
> @@ -0,0 +1,47 @@
> +ILP32 AARCH64 SYSCALL ABI
> +=========================
> +Written by Andrew Pinski <apinski@cavium.com>
> +Updated by Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> +Updated by Yury Norov <ynorov@caviumnetworks.com>
> +
> +
> +This document describes the ILP32 syscall ABI and where it differs
> +from the generic linux syscall interface.
> +
> +Some structures are changed to reduce the difference in the code path
> +for both ILP32 and LP64 ABIs for signal handling.
Given that user may upgrade from aarch32 to ILP32. How about add abi
comparison between aarch32 and aarch64 ilp32?

Regards

Bamvor


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

[toc] | [prev] | [next] | [standalone]


#1275623

FromAndreas Schwab <schwab@suse.de>
Date2015-11-23 17:50 +0100
Message-ID<qy2ts-4pB-19@gated-at.bofh.it>
In reply to#1271664
Yury Norov <ynorov@caviumnetworks.com> writes:

> v6:
>  - time_t, __kenel_off_t and other types turned to be 32-bit
>    for compatibility reasons (after v5 discussion);
>  - related changes applied to ILP32 syscall table and handlers;
>  - ILP32 VDSO code excluded. It's not mandatory, and caused questions
>    during review process. We definitely make sure we will follow up
>    with a VDSO later on because it is needed for performance reasons;
>  - fixed build issues with different combinations of AARCH32 / ILP32
>    enabling in config;
>  - ILP32 TLS bug fixed;
>  - entry32-common.S introduced to hold wrappers needed for both ILP32
>    and AARCH32_EL0;
>  - documentation updated according to latest changes;
>  - rebased to the current head;
>  - coding style re-checked;
>  - ILP32 syscall table turned around.

For some reason signal frame setup has been broken with this
incarnation.  I'm seeing x30 == 0 on entry to the signal handler.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | linux.kernel


csiph-web