linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@c-s.fr>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	 j.neuschaefer@gmx.net
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: [PATCH v5 16/16] powerpc/kconfig: make _etext and data areas alignment configurable on 8xx
Date: Thu, 21 Feb 2019 19:08:52 +0000 (UTC)	[thread overview]
Message-ID: <9f81d57c0c61d21f58293e8d82b101f6775e9b3e.1550775950.git.christophe.leroy@c-s.fr> (raw)
In-Reply-To: <cover.1550775950.git.christophe.leroy@c-s.fr>

On 8xx, large pages (512kb or 8M) are used to map kernel linear
memory. Aligning to 8M reduces TLB misses as only 8M pages are used
in that case. We make 8M the default for data.

This patchs allows the user to do it via Kconfig.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
 arch/powerpc/Kconfig           | 18 +++++++++++++++---
 arch/powerpc/kernel/head_8xx.S |  4 ++--
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index c4d6c97d7699..cf30a8f522b9 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -726,7 +726,8 @@ config THREAD_SHIFT
 	  want. Only change this if you know what you are doing.
 
 config ETEXT_SHIFT_BOOL
-	bool "Set custom etext alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+	bool "Set custom etext alignment" if STRICT_KERNEL_RWX && \
+					     (PPC_BOOK3S_32 || PPC_8xx)
 	depends on ADVANCED_OPTIONS
 	help
 	  This option allows you to set the kernel end of text alignment. When
@@ -738,6 +739,7 @@ config ETEXT_SHIFT_BOOL
 config ETEXT_SHIFT
 	int "_etext shift" if ETEXT_SHIFT_BOOL
 	range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+	range 19 23 if STRICT_KERNEL_RWX && PPC_8xx
 	default 17 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
 	default 19 if STRICT_KERNEL_RWX && PPC_8xx
 	default PPC_PAGE_SHIFT
@@ -745,8 +747,13 @@ config ETEXT_SHIFT
 	  On Book3S 32 (603+), IBATs are used to map kernel text.
 	  Smaller is the alignment, greater is the number of necessary IBATs.
 
+	  On 8xx, large pages (512kb or 8M) are used to map kernel linear
+	  memory. Aligning to 8M reduces TLB misses as only 8M pages are used
+	  in that case.
+
 config DATA_SHIFT_BOOL
-	bool "Set custom data alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+	bool "Set custom data alignment" if STRICT_KERNEL_RWX && \
+					    (PPC_BOOK3S_32 || PPC_8xx)
 	depends on ADVANCED_OPTIONS
 	help
 	  This option allows you to set the kernel data alignment. When
@@ -759,13 +766,18 @@ config DATA_SHIFT
 	int "Data shift" if DATA_SHIFT_BOOL
 	default 24 if STRICT_KERNEL_RWX && PPC64
 	range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
+	range 19 23 if STRICT_KERNEL_RWX && PPC_8xx
 	default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
-	default 19 if STRICT_KERNEL_RWX && PPC_8xx
+	default 23 if STRICT_KERNEL_RWX && PPC_8xx
 	default PPC_PAGE_SHIFT
 	help
 	  On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
 	  Smaller is the alignment, greater is the number of necessary DBATs.
 
+	  On 8xx, large pages (512kb or 8M) are used to map kernel linear
+	  memory. Aligning to 8M reduces TLB misses as only 8M pages are used
+	  in that case.
+
 config FORCE_MAX_ZONEORDER
 	int "Maximum zone order"
 	range 8 9 if PPC64 && PPC_64K_PAGES
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 01ed8f3c95c8..63f1b7eec3f0 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -416,7 +416,7 @@ InstructionTLBMiss:
 #ifndef CONFIG_PIN_TLB_TEXT
 ITLBMissLinear:
 	mtcr	r11
-#ifdef CONFIG_STRICT_KERNEL_RWX
+#if defined(CONFIG_STRICT_KERNEL_RWX) && CONFIG_ETEXT_SHIFT < 23
 	patch_site	0f, patch__itlbmiss_linmem_top8
 
 	mfspr	r10, SPRN_SRR0
@@ -537,7 +537,7 @@ DTLBMissIMMR:
 DTLBMissLinear:
 	mtcr	r11
 	rlwinm	r10, r10, 20, 0x0f800000	/* 8xx supports max 256Mb RAM */
-#ifdef CONFIG_STRICT_KERNEL_RWX
+#if defined(CONFIG_STRICT_KERNEL_RWX) && CONFIG_DATA_SHIFT < 23
 	patch_site	0f, patch__dtlbmiss_romem_top8
 
 0:	subis	r11, r10, (PAGE_OFFSET - 0x80000000)@ha
-- 
2.13.3


      parent reply	other threads:[~2019-02-21 19:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-21 19:08 [PATCH v5 00/16] powerpc/32: Use BATs/LTLBs for STRICT_KERNEL_RWX Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 01/16] powerpc/wii: properly disable use of BATs when requested Christophe Leroy
2019-02-26  3:27   ` [v5, " Michael Ellerman
2019-02-21 19:08 ` [PATCH v5 02/16] powerpc/mm/32: add base address to mmu_mapin_ram() Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 03/16] powerpc/mm/32s: rework mmu_mapin_ram() Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 04/16] powerpc/mm/32s: use generic mmu_mapin_ram() for all blocks Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 05/16] powerpc/32: always populate page tables for Abatron BDI Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 06/16] powerpc/wii: remove wii_mmu_mapin_mem2() Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 07/16] powerpc/mm/32s: use _PAGE_EXEC in setbat() Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 08/16] powerpc/32: add helper to write into segment registers Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 09/16] powerpc/mmu: add is_strict_kernel_rwx() helper Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 10/16] powerpc/kconfig: define PAGE_SHIFT inside Kconfig Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 11/16] powerpc/kconfig: define CONFIG_DATA_SHIFT and CONFIG_ETEXT_SHIFT Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 12/16] powerpc/mm/32s: add setibat() clearibat() and update_bats() Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 13/16] powerpc/mm/32s: Use BATs for STRICT_KERNEL_RWX Christophe Leroy
2019-06-15 11:23   ` Andreas Schwab
2019-06-15 13:22     ` Christophe Leroy
2019-06-16  8:20     ` christophe leroy
2019-06-16  9:29       ` Andreas Schwab
2019-06-16 10:13       ` Andreas Schwab
2019-06-15 12:28   ` Andreas Schwab
2019-06-16  8:01     ` christophe leroy
2019-06-16  8:45       ` Andreas Schwab
2019-06-15 12:47   ` [PATCH] powerpc/mm/32s: only use MMU to mark initmem NX if STRICT_KERNEL_RWX Andreas Schwab
2019-06-15 13:25     ` Christophe Leroy
2019-06-15 14:36       ` Andreas Schwab
2019-06-16  8:06         ` christophe leroy
2019-06-17 21:22   ` [PATCH] powerpc/mm/32s: fix condition that is always true Andreas Schwab
2019-06-17 21:47     ` Christophe Leroy
2019-06-30  8:37     ` Michael Ellerman
2019-02-21 19:08 ` [PATCH v5 14/16] powerpc/kconfig: make _etext and data areas alignment configurable on Book3s 32 Christophe Leroy
2019-02-21 19:08 ` [PATCH v5 15/16] powerpc/8xx: don't disable large TLBs with CONFIG_STRICT_KERNEL_RWX Christophe Leroy
2019-02-21 19:08 ` Christophe Leroy [this message]

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=9f81d57c0c61d21f58293e8d82b101f6775e9b3e.1550775950.git.christophe.leroy@c-s.fr \
    --to=christophe.leroy@c-s.fr \
    --cc=benh@kernel.crashing.org \
    --cc=j.neuschaefer@gmx.net \
    --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 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).