All of lore.kernel.org
 help / color / mirror / Atom feed
From: guoren@kernel.org
To: guoren@kernel.org, palmer@dabbelt.com, arnd@arndb.de,
	anup@brainfault.org, gregkh@linuxfoundation.org, hch@lst.de
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-parisc@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	x86@kernel.org, heiko@sntech.de,
	Guo Ren <guoren@linux.alibaba.com>
Subject: [PATCH V8 10/20] riscv: compat: Re-implement TASK_SIZE for COMPAT_32BIT
Date: Wed, 16 Mar 2022 15:03:07 +0800	[thread overview]
Message-ID: <20220316070317.1864279-11-guoren@kernel.org> (raw)
In-Reply-To: <20220316070317.1864279-1-guoren@kernel.org>

From: Guo Ren <guoren@linux.alibaba.com>

Make TASK_SIZE from const to dynamic detect TIF_32BIT flag
function. Refer to arm64 to implement DEFAULT_MAP_WINDOW_64 for
efi-stub.

Limit 32-bit compatible process in 0-2GB virtual address range
(which is enough for real scenarios), because it could avoid
address sign extend problem when 32-bit enter 64-bit and ease
software design.

The standard 32-bit TASK_SIZE is 0x9dc00000:FIXADDR_START, and
compared to a compatible 32-bit, it increases 476MB for the
application's virtual address.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/riscv/include/asm/pgtable.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index e3549e50de95..afdc9ece2ba4 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -705,8 +705,17 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
  * 63–48 all equal to bit 47, or else a page-fault exception will occur."
  */
 #ifdef CONFIG_64BIT
-#define TASK_SIZE      (PGDIR_SIZE * PTRS_PER_PGD / 2)
-#define TASK_SIZE_MIN  (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+#define TASK_SIZE_64	(PGDIR_SIZE * PTRS_PER_PGD / 2)
+#define TASK_SIZE_MIN	(PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+
+#ifdef CONFIG_COMPAT
+#define TASK_SIZE_32	(_AC(0x80000000, UL) - PAGE_SIZE)
+#define TASK_SIZE	(test_thread_flag(TIF_32BIT) ? \
+			 TASK_SIZE_32 : TASK_SIZE_64)
+#else
+#define TASK_SIZE	TASK_SIZE_64
+#endif
+
 #else
 #define TASK_SIZE	FIXADDR_START
 #define TASK_SIZE_MIN	TASK_SIZE
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: guoren@kernel.org
To: guoren@kernel.org, palmer@dabbelt.com, arnd@arndb.de,
	anup@brainfault.org, gregkh@linuxfoundation.org, hch@lst.de
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-parisc@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	x86@kernel.org, heiko@sntech.de,
	Guo Ren <guoren@linux.alibaba.com>
Subject: [PATCH V8 10/20] riscv: compat: Re-implement TASK_SIZE for COMPAT_32BIT
Date: Wed, 16 Mar 2022 15:03:07 +0800	[thread overview]
Message-ID: <20220316070317.1864279-11-guoren@kernel.org> (raw)
In-Reply-To: <20220316070317.1864279-1-guoren@kernel.org>

From: Guo Ren <guoren@linux.alibaba.com>

Make TASK_SIZE from const to dynamic detect TIF_32BIT flag
function. Refer to arm64 to implement DEFAULT_MAP_WINDOW_64 for
efi-stub.

Limit 32-bit compatible process in 0-2GB virtual address range
(which is enough for real scenarios), because it could avoid
address sign extend problem when 32-bit enter 64-bit and ease
software design.

The standard 32-bit TASK_SIZE is 0x9dc00000:FIXADDR_START, and
compared to a compatible 32-bit, it increases 476MB for the
application's virtual address.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/riscv/include/asm/pgtable.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index e3549e50de95..afdc9ece2ba4 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -705,8 +705,17 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
  * 63–48 all equal to bit 47, or else a page-fault exception will occur."
  */
 #ifdef CONFIG_64BIT
-#define TASK_SIZE      (PGDIR_SIZE * PTRS_PER_PGD / 2)
-#define TASK_SIZE_MIN  (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+#define TASK_SIZE_64	(PGDIR_SIZE * PTRS_PER_PGD / 2)
+#define TASK_SIZE_MIN	(PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+
+#ifdef CONFIG_COMPAT
+#define TASK_SIZE_32	(_AC(0x80000000, UL) - PAGE_SIZE)
+#define TASK_SIZE	(test_thread_flag(TIF_32BIT) ? \
+			 TASK_SIZE_32 : TASK_SIZE_64)
+#else
+#define TASK_SIZE	TASK_SIZE_64
+#endif
+
 #else
 #define TASK_SIZE	FIXADDR_START
 #define TASK_SIZE_MIN	TASK_SIZE
-- 
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: guoren@kernel.org
To: guoren@kernel.org, palmer@dabbelt.com, arnd@arndb.de,
	anup@brainfault.org, gregkh@linuxfoundation.org, hch@lst.de
Cc: linux-arch@vger.kernel.org, linux-s390@vger.kernel.org,
	Guo Ren <guoren@linux.alibaba.com>,
	heiko@sntech.de, linux-parisc@vger.kernel.org, x86@kernel.org,
	linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org,
	linux-mips@vger.kernel.org, sparclinux@vger.kernel.org,
	linux-riscv@lists.infradead.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH V8 10/20] riscv: compat: Re-implement TASK_SIZE for COMPAT_32BIT
Date: Wed, 16 Mar 2022 15:03:07 +0800	[thread overview]
Message-ID: <20220316070317.1864279-11-guoren@kernel.org> (raw)
In-Reply-To: <20220316070317.1864279-1-guoren@kernel.org>

From: Guo Ren <guoren@linux.alibaba.com>

Make TASK_SIZE from const to dynamic detect TIF_32BIT flag
function. Refer to arm64 to implement DEFAULT_MAP_WINDOW_64 for
efi-stub.

Limit 32-bit compatible process in 0-2GB virtual address range
(which is enough for real scenarios), because it could avoid
address sign extend problem when 32-bit enter 64-bit and ease
software design.

The standard 32-bit TASK_SIZE is 0x9dc00000:FIXADDR_START, and
compared to a compatible 32-bit, it increases 476MB for the
application's virtual address.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/riscv/include/asm/pgtable.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index e3549e50de95..afdc9ece2ba4 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -705,8 +705,17 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
  * 63–48 all equal to bit 47, or else a page-fault exception will occur."
  */
 #ifdef CONFIG_64BIT
-#define TASK_SIZE      (PGDIR_SIZE * PTRS_PER_PGD / 2)
-#define TASK_SIZE_MIN  (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+#define TASK_SIZE_64	(PGDIR_SIZE * PTRS_PER_PGD / 2)
+#define TASK_SIZE_MIN	(PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+
+#ifdef CONFIG_COMPAT
+#define TASK_SIZE_32	(_AC(0x80000000, UL) - PAGE_SIZE)
+#define TASK_SIZE	(test_thread_flag(TIF_32BIT) ? \
+			 TASK_SIZE_32 : TASK_SIZE_64)
+#else
+#define TASK_SIZE	TASK_SIZE_64
+#endif
+
 #else
 #define TASK_SIZE	FIXADDR_START
 #define TASK_SIZE_MIN	TASK_SIZE
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: guoren@kernel.org
To: guoren@kernel.org, palmer@dabbelt.com, arnd@arndb.de,
	anup@brainfault.org, gregkh@linuxfoundation.org, hch@lst.de
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-parisc@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	x86@kernel.org, heiko@sntech.de,
	Guo Ren <guoren@linux.alibaba.com>
Subject: [PATCH V8 10/20] riscv: compat: Re-implement TASK_SIZE for COMPAT_32BIT
Date: Wed, 16 Mar 2022 15:03:07 +0800	[thread overview]
Message-ID: <20220316070317.1864279-11-guoren@kernel.org> (raw)
In-Reply-To: <20220316070317.1864279-1-guoren@kernel.org>

From: Guo Ren <guoren@linux.alibaba.com>

Make TASK_SIZE from const to dynamic detect TIF_32BIT flag
function. Refer to arm64 to implement DEFAULT_MAP_WINDOW_64 for
efi-stub.

Limit 32-bit compatible process in 0-2GB virtual address range
(which is enough for real scenarios), because it could avoid
address sign extend problem when 32-bit enter 64-bit and ease
software design.

The standard 32-bit TASK_SIZE is 0x9dc00000:FIXADDR_START, and
compared to a compatible 32-bit, it increases 476MB for the
application's virtual address.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/riscv/include/asm/pgtable.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index e3549e50de95..afdc9ece2ba4 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -705,8 +705,17 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
  * 63–48 all equal to bit 47, or else a page-fault exception will occur."
  */
 #ifdef CONFIG_64BIT
-#define TASK_SIZE      (PGDIR_SIZE * PTRS_PER_PGD / 2)
-#define TASK_SIZE_MIN  (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+#define TASK_SIZE_64	(PGDIR_SIZE * PTRS_PER_PGD / 2)
+#define TASK_SIZE_MIN	(PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)
+
+#ifdef CONFIG_COMPAT
+#define TASK_SIZE_32	(_AC(0x80000000, UL) - PAGE_SIZE)
+#define TASK_SIZE	(test_thread_flag(TIF_32BIT) ? \
+			 TASK_SIZE_32 : TASK_SIZE_64)
+#else
+#define TASK_SIZE	TASK_SIZE_64
+#endif
+
 #else
 #define TASK_SIZE	FIXADDR_START
 #define TASK_SIZE_MIN	TASK_SIZE
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-03-16  7:05 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-16  7:02 [PATCH V8 00/20] riscv: compat: Add COMPAT Kbuild skeletal support guoren
2022-03-16  7:02 ` guoren
2022-03-16  7:02 ` guoren
2022-03-16  7:02 ` guoren
2022-03-16  7:02 ` [PATCH V8 01/20] uapi: simplify __ARCH_FLOCK{,64}_PAD a little guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:02 ` [PATCH V8 02/20] uapi: always define F_GETLK64/F_SETLK64/F_SETLKW64 in fcntl.h guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:02   ` guoren
2022-03-16  7:03 ` [PATCH V8 03/20] compat: consolidate the compat_flock{,64} definition guoren
2022-03-16  7:03   ` [PATCH V8 03/20] compat: consolidate the compat_flock{, 64} definition guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 04/20] kconfig: Add SYSVIPC_COMPAT for all architectures guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 05/20] fs: stat: compat: Add __ARCH_WANT_COMPAT_STAT guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 06/20] asm-generic: compat: Cleanup duplicate definitions guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 07/20] syscalls: compat: Fix the missing part for __SYSCALL_COMPAT guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 08/20] riscv: Fixup difference with defconfig guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 09/20] riscv: compat: Add basic compat data type implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` guoren [this message]
2022-03-16  7:03   ` [PATCH V8 10/20] riscv: compat: Re-implement TASK_SIZE for COMPAT_32BIT guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-21  0:22   ` Guo Ren
2022-03-21  0:22     ` Guo Ren
2022-03-21  0:22     ` Guo Ren
2022-03-21  0:22     ` Guo Ren
2022-03-16  7:03 ` [PATCH V8 11/20] riscv: compat: syscall: Add compat_sys_call_table implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 12/20] riscv: compat: syscall: Add entry.S implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 13/20] riscv: compat: process: Add UXL_32 support in start_thread guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 14/20] riscv: compat: Add elf.h implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 15/20] riscv: compat: Add hw capability check for elf guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 16/20] riscv: compat: vdso: Add COMPAT_VDSO base code implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 17/20] riscv: compat: vdso: Add setup additional pages implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 18/20] riscv: compat: signal: Add rt_frame implementation guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 19/20] riscv: compat: ptrace: Add compat_arch_ptrace implement guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03 ` [PATCH V8 20/20] riscv: compat: Add COMPAT Kbuild skeletal support guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren
2022-03-16  7:03   ` guoren

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=20220316070317.1864279-11-guoren@kernel.org \
    --to=guoren@kernel.org \
    --cc=anup@brainfault.org \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=guoren@linux.alibaba.com \
    --cc=hch@lst.de \
    --cc=heiko@sntech.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=palmer@dabbelt.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=x86@kernel.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.