From: sashiko-bot@kernel.org
To: "Jinjie Ruan" <ruanjinjie@huawei.com>
Cc: "Oliver Upton" <oupton@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
kvmarm@lists.linux.dev
Subject: Re: [PATCH 07/17] arm64/sysreg: Add definitions for immediate versions of MSR ALLINT
Date: Fri, 03 Jul 2026 10:18:57 +0000 [thread overview]
Message-ID: <20260703101858.F3D451F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260703100135.2512312-8-ruanjinjie@huawei.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The `_allint_clear()` and `_allint_set()` functions lack compiler memory barriers, allowing dangerous compiler reordering across NMI boundaries.
- [Low] The new `arch/arm64/include/asm/nmi.h` header uses macros from `<asm/sysreg.h>` but fails to include it, breaking self-containment.
--
commit f45a4a26dfbea0878dc6e4ccc4dcf5b6a158b356
Author: Mark Brown <broonie@kernel.org>
arm64/sysreg: Add definitions for immediate versions of MSR ALLINT
This commit adds system register definitions for immediate versions of
MSR ALLINT (SYS_ALLINT_CLR, SYS_ALLINT_SET). It also introduces a new
header, asm/nmi.h, with wrappers _allint_clear() and _allint_set() that
write to these registers using xzr.
Link: https://lore.kernel.org/r/20221112151708.175147-5-broonie@kernel.org
> diff --git a/arch/arm64/include/asm/nmi.h b/arch/arm64/include/asm/nmi.h
> new file mode 100644
> index 0000000000000..eb2c9a8350cc8
> --- /dev/null
> +++ b/arch/arm64/include/asm/nmi.h
> @@ -0,0 +1,23 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (C) 2022 ARM Ltd.
> + */
> +#ifndef __ASM_NMI_H
> +#define __ASM_NMI_H
> +
> +#ifdef CONFIG_ARM64_NMI
[Severity: Low]
Is a #include <asm/sysreg.h> directive missing in this new header?
It uses the __msr_s macro and SYS_ALLINT_CLR/SET definitions from sysreg.h.
Without the include, it might break self-containment if another file includes
asm/nmi.h first.
> +static __always_inline void _allint_clear(void)
> +{
> + asm volatile(__msr_s(SYS_ALLINT_CLR, "xzr"));
[Severity: High]
Does this inline assembly need a "memory" clobber?
Without a compiler memory barrier, the compiler might hoist or sink memory
accesses across the NMI masking/unmasking boundary. This could lead to data
corruption or kernel panics when protected data structures are accessed
concurrently.
> +}
> +
> +static __always_inline void _allint_set(void)
> +{
> + asm volatile(__msr_s(SYS_ALLINT_SET, "xzr"));
[Severity: High]
Should this masking function also use a "memory" clobber to prevent compiler
reordering across the boundary?
> +}
> +#else
> +static __always_inline void _allint_clear(void) { }
> +static __always_inline void _allint_set(void) { }
[Severity: High]
Would it be safer for these fallback implementations to include a barrier()
call?
If they are used outside of strict architectural checks, an empty function
allows the compiler to reorder memory operations across where the NMI critical
section was intended.
> +#endif /* CONFIG_ARM64_NMI */
> +
> +#endif
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260703100135.2512312-1-ruanjinjie@huawei.com?part=7
next prev parent reply other threads:[~2026-07-03 10:18 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-03 10:01 [PATCH 00/17] arm64: Support FEAT_NMI and Rework Exception Masking Jinjie Ruan
2026-07-03 10:01 ` [PATCH 01/17] arm64: Move DAIF macros to ptrace.h and use them centrally Jinjie Ruan
2026-07-03 16:44 ` Breno Leitao
2026-07-06 12:57 ` Jinjie Ruan
2026-07-03 10:01 ` [PATCH 02/17] arm64: Rework exception masking into abstract logical mask Jinjie Ruan
2026-07-03 10:15 ` sashiko-bot
2026-07-03 13:38 ` Leonardo Bras
2026-07-06 13:00 ` Jinjie Ruan
2026-07-06 13:02 ` Leonardo Bras
2026-07-03 13:48 ` Leonardo Bras
2026-07-06 13:15 ` Jinjie Ruan
2026-07-06 13:43 ` Leonardo Bras
2026-07-07 8:39 ` Jinjie Ruan
2026-07-03 10:01 ` [PATCH 03/17] arm64: entry: arm64: entry: Move DAIF masking for EL1 exit to C code Jinjie Ruan
2026-07-03 10:01 ` [PATCH 04/17] arm64: entry: Add entry-specific helpers Jinjie Ruan
2026-07-03 10:17 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 05/17] arm64: Introduce helpers for restoring standard exception masks Jinjie Ruan
2026-07-03 10:01 ` [PATCH 06/17] arm64/booting: Document boot requirements for FEAT_NMI Jinjie Ruan
2026-07-03 10:15 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 07/17] arm64/sysreg: Add definitions for immediate versions of MSR ALLINT Jinjie Ruan
2026-07-03 10:18 ` sashiko-bot [this message]
2026-07-03 10:01 ` [PATCH 08/17] arm64/hyp-stub: Enable access to ALLINT Jinjie Ruan
2026-07-03 10:16 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 09/17] arm64/idreg: Add an override for FEAT_NMI Jinjie Ruan
2026-07-03 10:20 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 10/17] arm64/cpufeature: Detect PE support " Jinjie Ruan
2026-07-03 10:01 ` [PATCH 11/17] KVM: arm64: Hide FEAT_NMI from guests Jinjie Ruan
2026-07-03 10:13 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 12/17] arm64/nmi: Manage masking for superpriority interrupts along with DAIF Jinjie Ruan
2026-07-03 10:27 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 13/17] arm64/entry: Don't call preempt_schedule_irq() with NMIs masked Jinjie Ruan
2026-07-03 10:01 ` [PATCH 14/17] arm64/irq: Document handling of FEAT_NMI in irqflags.h Jinjie Ruan
2026-07-03 10:01 ` [PATCH 15/17] arm64/nmi: Add handling of superpriority interrupts as NMIs Jinjie Ruan
2026-07-03 10:19 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 16/17] arm64/nmi: Add Kconfig for NMI Jinjie Ruan
2026-07-03 10:28 ` sashiko-bot
2026-07-03 10:01 ` [PATCH 17/17] irqchip/gic-v3: Implement FEAT_GICv3_NMI support Jinjie Ruan
2026-07-03 10:25 ` sashiko-bot
2026-07-03 14:15 ` [PATCH 00/17] arm64: Support FEAT_NMI and Rework Exception Masking Mark Rutland
2026-07-06 1:10 ` Jinjie Ruan
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=20260703101858.F3D451F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=ruanjinjie@huawei.com \
--cc=sashiko-reviews@lists.linux.dev \
/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.