stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Will Deacon <will@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	catalin.marinas@arm.com, ryabinin.a.a@gmail.com,
	anshuman.khandual@arm.com, pasha.tatashin@soleen.com,
	broonie@kernel.org, maz@kernel.org, suzuki.poulose@arm.com,
	vladimir.murzin@arm.com, james.morse@arm.com,
	Julia.Lawall@inria.fr, akpm@linux-foundation.org,
	david@redhat.com, jianyong.wu@arm.com, quic_sudaraja@quicinc.com,
	vijayb@linux.microsoft.com, rppt@kernel.org,
	linux-arm-kernel@lists.infradead.org, kasan-dev@googlegroups.com
Subject: [PATCH AUTOSEL 5.18 04/53] arm64: mm: provide idmap pointer to cpu_replace_ttbr1()
Date: Sun,  7 Aug 2022 21:32:59 -0400	[thread overview]
Message-ID: <20220808013350.314757-4-sashal@kernel.org> (raw)
In-Reply-To: <20220808013350.314757-1-sashal@kernel.org>

From: Ard Biesheuvel <ardb@kernel.org>

[ Upstream commit 1682c45b920643cbde31d8a5b7ca7c2be92d6928 ]

In preparation for changing the way we initialize the permanent ID map,
update cpu_replace_ttbr1() so we can use it with the initial ID map as
well.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20220624150651.1358849-11-ardb@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/include/asm/mmu_context.h | 13 +++++++++----
 arch/arm64/kernel/cpufeature.c       |  2 +-
 arch/arm64/kernel/suspend.c          |  2 +-
 arch/arm64/mm/kasan_init.c           |  4 ++--
 arch/arm64/mm/mmu.c                  |  2 +-
 5 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index 6770667b34a3..f47e7ced3ff9 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -106,13 +106,18 @@ static inline void cpu_uninstall_idmap(void)
 		cpu_switch_mm(mm->pgd, mm);
 }
 
-static inline void cpu_install_idmap(void)
+static inline void __cpu_install_idmap(pgd_t *idmap)
 {
 	cpu_set_reserved_ttbr0();
 	local_flush_tlb_all();
 	cpu_set_idmap_tcr_t0sz();
 
-	cpu_switch_mm(lm_alias(idmap_pg_dir), &init_mm);
+	cpu_switch_mm(lm_alias(idmap), &init_mm);
+}
+
+static inline void cpu_install_idmap(void)
+{
+	__cpu_install_idmap(idmap_pg_dir);
 }
 
 /*
@@ -143,7 +148,7 @@ static inline void cpu_install_ttbr0(phys_addr_t ttbr0, unsigned long t0sz)
  * Atomically replaces the active TTBR1_EL1 PGD with a new VA-compatible PGD,
  * avoiding the possibility of conflicting TLB entries being allocated.
  */
-static inline void __nocfi cpu_replace_ttbr1(pgd_t *pgdp)
+static inline void __nocfi cpu_replace_ttbr1(pgd_t *pgdp, pgd_t *idmap)
 {
 	typedef void (ttbr_replace_func)(phys_addr_t);
 	extern ttbr_replace_func idmap_cpu_replace_ttbr1;
@@ -166,7 +171,7 @@ static inline void __nocfi cpu_replace_ttbr1(pgd_t *pgdp)
 
 	replace_phys = (void *)__pa_symbol(function_nocfi(idmap_cpu_replace_ttbr1));
 
-	cpu_install_idmap();
+	__cpu_install_idmap(idmap);
 	replace_phys(ttbr1);
 	cpu_uninstall_idmap();
 }
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 2cb9cc9e0eff..859e9b635ba0 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -3107,7 +3107,7 @@ subsys_initcall_sync(init_32bit_el0_mask);
 
 static void __maybe_unused cpu_enable_cnp(struct arm64_cpu_capabilities const *cap)
 {
-	cpu_replace_ttbr1(lm_alias(swapper_pg_dir));
+	cpu_replace_ttbr1(lm_alias(swapper_pg_dir), idmap_pg_dir);
 }
 
 /*
diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c
index 2b0887e58a7c..9135fe0f3df5 100644
--- a/arch/arm64/kernel/suspend.c
+++ b/arch/arm64/kernel/suspend.c
@@ -52,7 +52,7 @@ void notrace __cpu_suspend_exit(void)
 
 	/* Restore CnP bit in TTBR1_EL1 */
 	if (system_supports_cnp())
-		cpu_replace_ttbr1(lm_alias(swapper_pg_dir));
+		cpu_replace_ttbr1(lm_alias(swapper_pg_dir), idmap_pg_dir);
 
 	/*
 	 * PSTATE was not saved over suspend/resume, re-enable any detected
diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c
index c12cd700598f..e969e68de005 100644
--- a/arch/arm64/mm/kasan_init.c
+++ b/arch/arm64/mm/kasan_init.c
@@ -236,7 +236,7 @@ static void __init kasan_init_shadow(void)
 	 */
 	memcpy(tmp_pg_dir, swapper_pg_dir, sizeof(tmp_pg_dir));
 	dsb(ishst);
-	cpu_replace_ttbr1(lm_alias(tmp_pg_dir));
+	cpu_replace_ttbr1(lm_alias(tmp_pg_dir), idmap_pg_dir);
 
 	clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END);
 
@@ -280,7 +280,7 @@ static void __init kasan_init_shadow(void)
 				PAGE_KERNEL_RO));
 
 	memset(kasan_early_shadow_page, KASAN_SHADOW_INIT, PAGE_SIZE);
-	cpu_replace_ttbr1(lm_alias(swapper_pg_dir));
+	cpu_replace_ttbr1(lm_alias(swapper_pg_dir), idmap_pg_dir);
 }
 
 static void __init kasan_init_depth(void)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 626ec32873c6..903745ea801a 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -771,7 +771,7 @@ void __init paging_init(void)
 
 	pgd_clear_fixmap();
 
-	cpu_replace_ttbr1(lm_alias(swapper_pg_dir));
+	cpu_replace_ttbr1(lm_alias(swapper_pg_dir), idmap_pg_dir);
 	init_mm.pgd = swapper_pg_dir;
 
 	memblock_phys_free(__pa_symbol(init_pg_dir),
-- 
2.35.1


  parent reply	other threads:[~2022-08-08  1:39 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-08  1:32 [PATCH AUTOSEL 5.18 01/53] x86: Handle idle=nomwait cmdline properly for x86_idle Sasha Levin
2022-08-08  1:32 ` [PATCH AUTOSEL 5.18 02/53] arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic Sasha Levin
2022-08-08  1:32 ` [PATCH AUTOSEL 5.18 03/53] arm64: kernel: drop unnecessary PoC cache clean+invalidate Sasha Levin
2022-08-08  1:32 ` Sasha Levin [this message]
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 05/53] arm64: kaslr: defer initialization to initcall where permitted Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 06/53] arm64: Do not forget syscall when starting a new thread Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 07/53] arm64: fix oops in concurrently setting insn_emulation sysctls Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 08/53] mm: kasan: Ensure the tags are visible before the tag in page->flags Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 09/53] mm: kasan: Skip unpoisoning of user pages Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 10/53] mm: kasan: Skip page unpoisoning only if __GFP_SKIP_KASAN_UNPOISON Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 11/53] arm64: kasan: Revert "arm64: mte: reset the page tag in page->flags" Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 12/53] arm64: errata: Remove AES hwcap for COMPAT tasks Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 13/53] ext2: Add more validity checks for inode counts Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 14/53] sched/fair: Introduce SIS_UTIL to search idle CPU based on sum of util_avg Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 15/53] genirq: Don't return error on missing optional irq_request_resources() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 16/53] irqchip/mips-gic: Only register IPI domain when SMP is enabled Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 17/53] genirq: GENERIC_IRQ_IPI depends on SMP Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 18/53] sched/fair: fix case with reduced capacity CPU Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 19/53] sched/core: Always flush pending blk_plug Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 20/53] irqchip/mips-gic: Check the return value of ioremap() in gic_of_init() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 21/53] wait: Fix __wait_event_hrtimeout for RT/DL tasks Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 22/53] ARM: dts: imx6ul: add missing properties for sram Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 23/53] ARM: dts: imx6ul: change operating-points to uint32-matrix Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 24/53] ARM: dts: imx6ul: fix keypad compatible Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 25/53] ARM: dts: imx6ul: fix csi node compatible Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 26/53] ARM: dts: imx6ul: fix lcdif " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 27/53] ARM: dts: imx6ul: fix qspi " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 29/53] ARM: dts: ux500: Fix Janice accelerometer mounting matrix Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 30/53] ARM: dts: ux500: Fix Codina " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 31/53] ARM: dts: ux500: Fix Gavini " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 32/53] arm64: dts: qcom: timer should use only 32-bit size Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 33/53] spi: synquacer: Add missing clk_disable_unprepare() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 34/53] ARM: OMAP2+: display: Fix refcount leak bug Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 35/53] ARM: OMAP2+: pdata-quirks: " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 36/53] ACPI: EC: Remove duplicate ThinkPad X1 Carbon 6th entry from DMI quirks Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 37/53] ACPI: EC: Drop the EC_FLAGS_IGNORE_DSDT_GPE quirk Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 38/53] ACPI: PM: save NVS memory for Lenovo G40-45 Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 39/53] ACPI: LPSS: Fix missing check in register_device_clock() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 40/53] ARM: dts: qcom: sdx55: Fix the IRQ trigger type for UART Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 41/53] arm64: dts: qcom: add missing AOSS QMP compatible fallback Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 42/53] arm64: dts: qcom: ipq8074: fix NAND node name Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 43/53] arm64: dts: allwinner: a64: orangepi-win: Fix LED " Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 44/53] ARM: shmobile: rcar-gen2: Increase refcount for new reference Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 45/53] firmware: tegra: Fix error check return value of debugfs_create_file() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 46/53] hwmon: (dell-smm) Add Dell XPS 13 7390 to fan control whitelist Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 47/53] ACPI: video: Use native backlight on Dell Inspiron N4010 Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 48/53] hwmon: (sht15) Fix wrong assumptions in device remove callback Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 49/53] PM: hibernate: defer device probing when resuming from hibernation Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 50/53] selinux: fix memleak in security_read_state_kernel() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 51/53] selinux: Add boundary check in put_entry() Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 52/53] skbuff: don't mix ubuf_info from different sources Sasha Levin
2022-08-08  1:33 ` [PATCH AUTOSEL 5.18 53/53] kasan: test: Silence GCC 12 warnings Sasha Levin

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=20220808013350.314757-4-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Julia.Lawall@inria.fr \
    --cc=akpm@linux-foundation.org \
    --cc=anshuman.khandual@arm.com \
    --cc=ardb@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=david@redhat.com \
    --cc=james.morse@arm.com \
    --cc=jianyong.wu@arm.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=pasha.tatashin@soleen.com \
    --cc=quic_sudaraja@quicinc.com \
    --cc=rppt@kernel.org \
    --cc=ryabinin.a.a@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=vijayb@linux.microsoft.com \
    --cc=vladimir.murzin@arm.com \
    --cc=will@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 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).