All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v1 03/30] powerpc/vdso: Rename syscall_map_32/64 to simplify vdso_setup_syscall_map()
Date: Sun, 27 Sep 2020 09:16:20 +0000 (UTC)	[thread overview]
Message-ID: <472734be0d9991eee320a06824219a5b2663736b.1601197618.git.christophe.leroy@csgroup.eu> (raw)
In-Reply-To: <cover.1601197618.git.christophe.leroy@csgroup.eu>

Today vdso_data structure has:
- syscall_map_32[] and syscall_map_64[] on PPC64
- syscall_map_32[] on PPC32

On PPC32, syscall_map_32[] is populated using sys_call_table[].

On PPC64, syscall_map_64[] is populated using sys_call_table[]
and syscal_map_32[] is populated using compat_sys_call_table[].

To simplify vdso_setup_syscall_map(),
- On PPC32 rename syscall_map_32[] into syscall_map[],
- On PPC64 rename syscall_map_64[] into syscall_map[],
- On PPC64 rename syscall_map_32[] into compat_syscall_map[].

That way, syscall_map[] gets populated using sys_call_table[] and
compat_syscall_map[] gets population using compat_sys_call_table[].

Also define an empty compat_syscall_map[] on PPC32 to avoid ifdefs.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
 arch/powerpc/include/asm/vdso_datapage.h |  7 ++++---
 arch/powerpc/kernel/asm-offsets.c        |  6 ++++--
 arch/powerpc/kernel/vdso.c               | 12 ++----------
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/arch/powerpc/include/asm/vdso_datapage.h b/arch/powerpc/include/asm/vdso_datapage.h
index c4d320504d26..3d996db05acd 100644
--- a/arch/powerpc/include/asm/vdso_datapage.h
+++ b/arch/powerpc/include/asm/vdso_datapage.h
@@ -79,8 +79,8 @@ struct vdso_arch_data {
 	__u32 icache_block_size;		/* L1 i-cache block size     */
 	__u32 dcache_log_block_size;		/* L1 d-cache log block size */
 	__u32 icache_log_block_size;		/* L1 i-cache log block size */
-   	__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls  */
-   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
+	__u32 syscall_map[SYSCALL_MAP_SIZE];	/* Map of syscalls  */
+	__u32 compat_syscall_map[SYSCALL_MAP_SIZE];	/* Map of compat syscalls */
 
 	struct vdso_data data[CS_BASES];
 };
@@ -92,7 +92,8 @@ struct vdso_arch_data {
  */
 struct vdso_arch_data {
 	__u64 tb_ticks_per_sec;		/* Timebase tics / sec		0x38 */
-   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
+	__u32 syscall_map[SYSCALL_MAP_SIZE]; /* Map of syscalls */
+	__u32 compat_syscall_map[0];	/* No compat syscalls on PPC32 */
 	struct vdso_data data[CS_BASES];
 };
 
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 684260186dbf..e48043087208 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -399,13 +399,15 @@ int main(void)
 	/* datapage offsets for use by vdso */
 	OFFSET(VDSO_DATA_OFFSET, vdso_arch_data, data);
 	OFFSET(CFG_TB_TICKS_PER_SEC, vdso_arch_data, tb_ticks_per_sec);
-	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map_32);
 #ifdef CONFIG_PPC64
 	OFFSET(CFG_ICACHE_BLOCKSZ, vdso_arch_data, icache_block_size);
 	OFFSET(CFG_DCACHE_BLOCKSZ, vdso_arch_data, dcache_block_size);
 	OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_arch_data, icache_log_block_size);
 	OFFSET(CFG_DCACHE_LOGBLOCKSZ, vdso_arch_data, dcache_log_block_size);
-	OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map_64);
+	OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map);
+	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, compat_syscall_map);
+#else
+	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map);
 #endif
 
 #ifdef CONFIG_BUG
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index b0332c609104..6d106fcafb9e 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -643,19 +643,11 @@ static void __init vdso_setup_syscall_map(void)
 	unsigned int i;
 
 	for (i = 0; i < NR_syscalls; i++) {
-#ifdef CONFIG_PPC64
 		if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_64[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
+			vdso_data->syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
 		if (IS_ENABLED(CONFIG_COMPAT) &&
 		    compat_sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_32[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
-#else /* CONFIG_PPC64 */
-		if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_32[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
-#endif /* CONFIG_PPC64 */
+			vdso_data->compat_syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
 	}
 }
 
-- 
2.25.0


WARNING: multiple messages have this Message-ID (diff)
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: [PATCH v1 03/30] powerpc/vdso: Rename syscall_map_32/64 to simplify vdso_setup_syscall_map()
Date: Sun, 27 Sep 2020 09:16:20 +0000 (UTC)	[thread overview]
Message-ID: <472734be0d9991eee320a06824219a5b2663736b.1601197618.git.christophe.leroy@csgroup.eu> (raw)
In-Reply-To: <cover.1601197618.git.christophe.leroy@csgroup.eu>

Today vdso_data structure has:
- syscall_map_32[] and syscall_map_64[] on PPC64
- syscall_map_32[] on PPC32

On PPC32, syscall_map_32[] is populated using sys_call_table[].

On PPC64, syscall_map_64[] is populated using sys_call_table[]
and syscal_map_32[] is populated using compat_sys_call_table[].

To simplify vdso_setup_syscall_map(),
- On PPC32 rename syscall_map_32[] into syscall_map[],
- On PPC64 rename syscall_map_64[] into syscall_map[],
- On PPC64 rename syscall_map_32[] into compat_syscall_map[].

That way, syscall_map[] gets populated using sys_call_table[] and
compat_syscall_map[] gets population using compat_sys_call_table[].

Also define an empty compat_syscall_map[] on PPC32 to avoid ifdefs.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
 arch/powerpc/include/asm/vdso_datapage.h |  7 ++++---
 arch/powerpc/kernel/asm-offsets.c        |  6 ++++--
 arch/powerpc/kernel/vdso.c               | 12 ++----------
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/arch/powerpc/include/asm/vdso_datapage.h b/arch/powerpc/include/asm/vdso_datapage.h
index c4d320504d26..3d996db05acd 100644
--- a/arch/powerpc/include/asm/vdso_datapage.h
+++ b/arch/powerpc/include/asm/vdso_datapage.h
@@ -79,8 +79,8 @@ struct vdso_arch_data {
 	__u32 icache_block_size;		/* L1 i-cache block size     */
 	__u32 dcache_log_block_size;		/* L1 d-cache log block size */
 	__u32 icache_log_block_size;		/* L1 i-cache log block size */
-   	__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls  */
-   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
+	__u32 syscall_map[SYSCALL_MAP_SIZE];	/* Map of syscalls  */
+	__u32 compat_syscall_map[SYSCALL_MAP_SIZE];	/* Map of compat syscalls */
 
 	struct vdso_data data[CS_BASES];
 };
@@ -92,7 +92,8 @@ struct vdso_arch_data {
  */
 struct vdso_arch_data {
 	__u64 tb_ticks_per_sec;		/* Timebase tics / sec		0x38 */
-   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
+	__u32 syscall_map[SYSCALL_MAP_SIZE]; /* Map of syscalls */
+	__u32 compat_syscall_map[0];	/* No compat syscalls on PPC32 */
 	struct vdso_data data[CS_BASES];
 };
 
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 684260186dbf..e48043087208 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -399,13 +399,15 @@ int main(void)
 	/* datapage offsets for use by vdso */
 	OFFSET(VDSO_DATA_OFFSET, vdso_arch_data, data);
 	OFFSET(CFG_TB_TICKS_PER_SEC, vdso_arch_data, tb_ticks_per_sec);
-	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map_32);
 #ifdef CONFIG_PPC64
 	OFFSET(CFG_ICACHE_BLOCKSZ, vdso_arch_data, icache_block_size);
 	OFFSET(CFG_DCACHE_BLOCKSZ, vdso_arch_data, dcache_block_size);
 	OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_arch_data, icache_log_block_size);
 	OFFSET(CFG_DCACHE_LOGBLOCKSZ, vdso_arch_data, dcache_log_block_size);
-	OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map_64);
+	OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map);
+	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, compat_syscall_map);
+#else
+	OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map);
 #endif
 
 #ifdef CONFIG_BUG
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index b0332c609104..6d106fcafb9e 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -643,19 +643,11 @@ static void __init vdso_setup_syscall_map(void)
 	unsigned int i;
 
 	for (i = 0; i < NR_syscalls; i++) {
-#ifdef CONFIG_PPC64
 		if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_64[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
+			vdso_data->syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
 		if (IS_ENABLED(CONFIG_COMPAT) &&
 		    compat_sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_32[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
-#else /* CONFIG_PPC64 */
-		if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
-			vdso_data->syscall_map_32[i >> 5] |=
-				0x80000000UL >> (i & 0x1f);
-#endif /* CONFIG_PPC64 */
+			vdso_data->compat_syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
 	}
 }
 
-- 
2.25.0


  parent reply	other threads:[~2020-09-27  9:17 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-27  9:16 [PATCH v1 00/30] Modernise VDSO setup Christophe Leroy
2020-09-27  9:16 ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 01/30] powerpc/vdso: Stripped VDSO is not needed, don't build it Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 02/30] powerpc/vdso: Add missing includes and clean vdso_setup_syscall_map() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` Christophe Leroy [this message]
2020-09-27  9:16   ` [PATCH v1 03/30] powerpc/vdso: Rename syscall_map_32/64 to simplify vdso_setup_syscall_map() Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 04/30] powerpc/vdso: Remove get_page() in vdso_pagelist initialization Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 05/30] powerpc/vdso: Remove NULL termination element in vdso_pagelist Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 06/30] powerpc/vdso: Refactor 32 bits and 64 bits pages setup Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 07/30] powerpc/vdso: Remove unnecessary ifdefs in vdso_pagelist initialization Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 08/30] powerpc/vdso: Use VDSO size in arch_setup_additional_pages() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 09/30] powerpc/vdso: Simplify arch_setup_additional_pages() exit Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 10/30] powerpc/vdso: Move to _install_special_mapping() and remove arch_vma_name() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 11/30] powerpc/vdso: Provide vdso_remap() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 12/30] powerpc/vdso: Replace vdso_base by vdso Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 13/30] powerpc/vdso: Move vdso datapage up front Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 14/30] powerpc/vdso: Simplify __get_datapage() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 15/30] powerpc/vdso: Remove unused \tmp param in __get_datapage() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 16/30] powerpc/vdso: Retrieve sigtramp offsets at buildtime Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 17/30] powerpc/vdso: Use builtin symbols to locate fixup section Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 18/30] powerpc/vdso: Merge __kernel_sync_dicache_p5() into __kernel_sync_dicache() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 19/30] powerpc/vdso: Remove vdso32_pages and vdso64_pages Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 20/30] powerpc/vdso: Remove __kernel_datapage_offset Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 21/30] powerpc/vdso: Remove runtime generated sigtramp offsets Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 22/30] powerpc/vdso: Remove vdso_patches[] and associated functions Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 23/30] powerpc/vdso: Remove unused text member in struct lib32/64_elfinfo Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 24/30] powerpc/vdso: Remove symbol section information " Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 25/30] powerpc/vdso: Remove lib32_elfinfo and lib64_elfinfo Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 26/30] powerpc/vdso: Remove vdso_setup() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 27/30] powerpc/vdso: Remove vdso_ready Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 28/30] powerpc/vdso: Remove DBG() Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 29/30] powerpc/vdso: Remove VDSO32_LBASE and VDSO64_LBASE Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-09-27  9:16 ` [PATCH v1 30/30] powerpc/vdso: Cleanup vdso.h Christophe Leroy
2020-09-27  9:16   ` Christophe Leroy
2020-12-10 11:29 ` [PATCH v1 00/30] Modernise VDSO setup Michael Ellerman
2020-12-10 11:29   ` Michael Ellerman

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=472734be0d9991eee320a06824219a5b2663736b.1601197618.git.christophe.leroy@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=benh@kernel.crashing.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.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.