From: sashiko-bot@kernel.org
To: "Kevin Brodsky" <kevin.brodsky@arm.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Ard Biesheuvel" <ardb+git@google.com>,
"Andy Lutomirski" <luto@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
"David Hildenbrand (Arm)" <david@kernel.org>,
"Jann Horn" <jannh@google.com>, "Jeff Xu" <jeffxu@chromium.org>,
"Joey Gouly" <joey.gouly@arm.com>, "Kees Cook" <kees@kernel.org>,
"Linu Cherian" <linu.cherian@arm.com>,
"Linus Walleij" <linusw@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"Matthew Wilcox" <willy@infradead.org>,
"Maxwell Bland" <mbland@motorola.com>,
"Mike Rapoport (IBM)" <rppt@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Pierre Langlois" <pierre.langlois@arm.com>,
"Pierre-Clément Tosi" <ptosi@google.com>,
"Quentin Perret" <qperret@google.com>,
"Rick Edgecombe" <rick.p.edgecombe@intel.com>,
"Ryan Roberts" <ryan.roberts@arm.com>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Will Deacon" <will@kernel.org>,
"Yang Shi" <yang@os.amperecomputing.com>,
"Yeoreum Yun" <yeoreum.yun@arm.com>,
linux-mm@kvack.org, x86@kernel.org,
"Ira Weiny" <iweiny@kernel.org>,
"Lorenzo Stoakes" <ljs@kernel.org>,
"Thomas Gleixner" <tglx@kernel.org>
Subject: Re: [PATCH RFC v10 07/22] arm64: Initialize POR_EL1 register on cpu_resume()
Date: Tue, 10 Nov 2026 16:02:49 +0000 [thread overview]
Message-ID: <sashiko-outbox-207321@kernel.org> (raw)
In-Reply-To: <20261109-kpkeys-v10-7-aa6c4d9603bc@arm.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] arm64: unconfirmed ordering of SYS_POR_EL1 and REG_TCR2_EL1 in
_cpu_resume()
--
commit 5fdafa429ecfc231981525c4af268a477f615016
Author: Yeoreum Yun <yeoreum.yun@arm.com>
arm64: Initialize POR_EL1 register on cpu_resume()
This commit initializes POR_EL1 to POR_EL1_INIT in _cpu_resume() before
calling cpu_do_resume() since POR_EL1 resets to an unknown value across
cpu_suspend().
> diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S
> index f093cdf71be11..e0a6ad85cd242 100644
> --- a/arch/arm64/kernel/sleep.S
> +++ b/arch/arm64/kernel/sleep.S
[ ... ]
> @@ -134,6 +135,17 @@ SYM_FUNC_START(_cpu_resume)
> /* load sp from context */
> ldr x2, [x0, #CPU_CTX_SP]
> mov sp, x2
> +
> +#ifdef CONFIG_ARM64_POE
> +alternative_if_not ARM64_HAS_S1POE
> + b .Lskip_por_set
> +alternative_else_nop_endif
> + mov_q x2, POR_EL1_INIT
> + msr_s SYS_POR_EL1, x2
> + /* isb can be skipped since cpu_do_resume() will do it. */
[Severity: Low]
Can the indirect effect of writing REG_TCR2_EL1 in cpu_do_resume() take
effect before this unsynchronized write to SYS_POR_EL1 when no isb
separates the two system register writes?
This rests on an ARM architecture detail that the review could not confirm
from the kernel source. The MMU is already enabled when _cpu_resume()
runs, and cpu_do_resume() restores REG_TCR2_EL1 (with TCR2_EL1_POE set
once commit "arm64: Enable kpkeys" enables stage-1 POE at EL1) and
performs further instruction fetches and memory loads before the final
isb:
arch/arm64/mm/proc.S:cpu_do_resume() {
...
alternative_if ARM64_HAS_TCR2
ldr x2, [x0, #104]
msr REG_TCR2_EL1, x2
alternative_else_nop_endif
alternative_if ARM64_SME
ldr x2, [x0, #112]
msr_s SYS_TPIDR2_EL0, x2
alternative_else_nop_endif
...
ptrauth_keys_install_kernel_nosync x14, x1, x2, x3
isb
ret
}
If the architecture permits enabling stage-1 permission overlay in
REG_TCR2_EL1 to take effect on those intervening fetches or loads before
the write to SYS_POR_EL1 takes effect, the CPU could evaluate kernel
permission overlays against the unknown reset value of POR_EL1 and trigger
a fatal EL1 permission fault during resume.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261109-kpkeys-v10-0-aa6c4d9603bc@arm.com?part=7
next prev parent reply other threads:[~2026-11-10 16:02 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-09 15:58 [PATCH RFC v10 00/22] pkeys-based page table hardening Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 01/22] mm: Introduce kpkeys Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-11 10:24 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 02/22] set_memory: Introduce set_direct_map_pkey() stub Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 03/22] arm64: Introduce por_elx_set_pkey_perms() helper Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 04/22] arm64: Implement asm/kpkeys.h using POE Kevin Brodsky
2026-11-10 14:19 ` Mark Brown
2026-11-11 10:26 ` Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-11 15:18 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 05/22] arm64: set_memory: Implement set_direct_map_pkey() Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 06/22] arm64: Disable EL2 trapping of POR_EL1 Kevin Brodsky
2026-11-10 15:29 ` Mark Brown
2026-11-11 15:22 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 07/22] arm64: Initialize POR_EL1 register on cpu_resume() Kevin Brodsky
2026-11-10 15:53 ` Mark Brown
2026-11-10 16:36 ` Yeoreum Yun
2026-11-10 16:02 ` sashiko-bot [this message]
2026-11-09 15:58 ` [PATCH RFC v10 08/22] arm64: Context-switch POR_EL1 Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 09/22] arm64: mm: Enable overlays for all EL1 indirect permissions Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 10/22] arm64: Enable kpkeys Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 11/22] mm: kpkeys: Introduce kpkeys_hardened_pgtables feature Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 12/22] mm: kpkeys: Protect regular page tables Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 13/22] mm: kpkeys: Protect early kernel " Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 14/22] mm: kpkeys: Protect vmemmap " Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 15/22] arm64: kpkeys: Implement arch_supports_kpkeys_early() Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 16/22] arm64: kpkeys: Support KPKEYS_CTX_PGTABLES Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 17/22] arm64: kpkeys: Ensure the linear map can be modified Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 18/22] arm64: kpkeys: Guard page table writes Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 19/22] arm64: kpkeys: Batch KPKEYS_CTX_PGTABLES switches Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 20/22] arm64: kpkeys: Enable kpkeys_hardened_pgtables support Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 21/22] arm64: mm: Map kernel image alias of init_pg_dir read-only Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 22/22] mm: Add basic tests for kpkeys_hardened_pgtables Kevin Brodsky
2026-11-09 19:28 ` Mark Brown
2026-11-10 9:01 ` Kevin Brodsky
2026-11-10 11:24 ` Mark Brown
2026-11-11 15:29 ` Kevin Brodsky
2026-11-11 16:15 ` Mark Brown
2026-11-10 16:03 ` sashiko-bot
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=sashiko-outbox-207321@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=ardb+git@google.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=iweiny@kernel.org \
--cc=jannh@google.com \
--cc=jeffxu@chromium.org \
--cc=joey.gouly@arm.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--cc=linu.cherian@arm.com \
--cc=linusw@kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=luto@kernel.org \
--cc=maz@kernel.org \
--cc=mbland@motorola.com \
--cc=peterz@infradead.org \
--cc=pierre.langlois@arm.com \
--cc=ptosi@google.com \
--cc=qperret@google.com \
--cc=rick.p.edgecombe@intel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=tglx@kernel.org \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=yang@os.amperecomputing.com \
--cc=yeoreum.yun@arm.com \
/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