Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Ashok Raj <ashok.raj@oss.qualcomm.com>
Cc: Vladimir Murzin <vladimir.murzin@arm.com>,
	linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com,
	will@kernel.org, mark.rutland@arm.com, lpieralisi@kernel.org,
	ruanjinjie@huawei.com, liaochang1@huawei.com,
	Ashok Raj <ashoraj@qti.qualcomm.com>
Subject: Re: [PATCH 00/38] arm64: Add support for FEAT_NMI
Date: Tue, 27 Oct 2026 11:56:41 +0000	[thread overview]
Message-ID: <86tsm7xsp2.wl-maz@kernel.org> (raw)
In-Reply-To: <atwyAKSnttnBpked@hu-ashoraj-lv.qualcomm.com>

On Sat, 24 Oct 2026 05:20:16 +0100,
Ashok Raj <ashok.raj@oss.qualcomm.com> wrote:
> 
> On Mon, Sep 14, 2026 at 11:20:24AM +0100, Vladimir Murzin wrote:
> 
> > FEAT_NMI provides an architected mechanism for supporting non-maskable
> > interrupts (NMIs) and less-masked interrupts (LMIs).
> > 
> > Since we already support pseudo-NMIs via priority masking, introducing
> > another flavour of NMI on top of the existing infrastructure could
> > easily become messy, making the code harder to follow and reason
> > about.
> > 
> > To avoid that, this series first makes room for the new NMI "tenant"
> > by restructuring the existing exception masking logic (patches 01/38 -
> > 15/38)
> 
> 
> Hi all,
> 
> I am working on arm64 HEST/GHES Type-4 (NMI) support using FEAT_NMI
> and GIC NMI support.
> 
> On arm64, the proposed ACPI semantics are that the Type-4 Vector names
> one GSI corresponding to an NMI-capable GIC SPI.

I've already said all I had to say about encoding the notion of
priority in FW tables.

> The NMI property belongs
> to that SPI, while its target PE is normal mutable GIC routing state
> (GICD_IROUTER<n>). This also permits a platform to describe multiple
> GHESv2 Type-4 sources, each with a distinct NMI SPI.
> 
> The current Linux GHES implementation registers the interrupt with:
> 
>     request_nmi(irq, handler,
>                 IRQF_PERCPU | IRQF_NOBALANCING |
>                 IRQF_NO_THREAD | IRQF_NO_AUTOEN,
>                 ...);
>
> request_nmi() requires IRQF_PERCPU, which marks the descriptor IRQD_PER_CPU.
> Generic CPU-offline IRQ migration then skips it. This makes sense for a
> true PPI, but this GHES interrupt is an SPI: if its target CPU is offlined,
> GICD_IROUTER<n> may remain pointed at the outgoing PE and notification can
> be lost, or possibly it might fail the cpu offline since an interrupt
> can't be retargetted. 

Obviously, the PERCPU flag says exactly that. So if anything needs
fixing, it is the GHES driver.

> 
> The GICv3 affinity callback can retarget an NMI-configured SPI: it masks
> the SPI, updates GICD_IROUTER<n>, unmasks it, and updates effective
> affinity.
> 
> Would maintainers prefer that GHES explicitly retarget these NMI SPIs in a
> CPU-hotplug callback while retaining the current request_nmi() contract,
> or should genirq gain an explicit routable-NMI SPI registration model that
> is not marked IRQD_PER_CPU, but remains excluded from automatic balancing?

The question really is: why does the GHES interrupt need to be
strictly affine to one given CPU?

> In either model, the intended policy is that irqbalance must not move the
> interrupt,

NOBALANCING achieves this, by preventing userspace from changing the
affinity.

> but OSPM must be able to retarget the SPI before its target CPU is
> removed.

Whatever OSPM is...

The real question is *WHY* do you need this. What breaks if you let
these interrupts be migrated at will?

	M.

-- 
Without deviation from the norm, progress is not possible.


  parent reply	other threads:[~2026-10-27 11:56 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14 10:20 [PATCH 00/38] arm64: Add support for FEAT_NMI Vladimir Murzin
2026-09-14 10:20 ` [PATCH 01/38] arm64: irqflags: Introduce arm64-specific irqflags type Vladimir Murzin
2026-09-14 10:20 ` [PATCH 02/38] arm64: irqflags: save and use both DAIF and PMR Vladimir Murzin
2026-09-14 10:20 ` [PATCH 03/38] arm64: interrupts: Add common exception state helpers Vladimir Murzin
2026-09-17  8:58   ` Jinjie Ruan
2026-09-17  9:10   ` Jinjie Ruan
2026-09-21 14:10     ` Vladimir Murzin
2026-09-21 23:13       ` Ashok Raj
2026-09-14 10:20 ` [PATCH 04/38] arm64: process: Lift check for exception state to generic infrastructure Vladimir Murzin
2026-09-14 10:20 ` [PATCH 05/38] arm64: entry: Introduce entry specific exception masking helpers Vladimir Murzin
2026-09-17  9:53   ` Jinjie Ruan
2026-09-21 14:15     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 06/38] arm64: entry: replace DAIF helpers with entry helpers Vladimir Murzin
     [not found]   ` <15bc779f-e6f5-4c2a-a629-cb020f12a41a@huawei.com>
2026-09-21 14:01     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 07/38] arm64: interrupts: Introduce exception masking save/restore helpers Vladimir Murzin
2026-09-14 10:20 ` [PATCH 08/38] arm64: interrupts: introduce a helper for GIC priority initialization Vladimir Murzin
2026-09-14 10:20 ` [PATCH 09/38] arm64: replace local_daif helpers Vladimir Murzin
2026-09-17  8:14   ` Jinjie Ruan
2026-09-21 14:07     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 10/38] arm64: cpuidle: use new helpers to bypass interrupt priority masking Vladimir Murzin
2026-09-14 10:20 ` [PATCH 11/38] arm64: remove daifflags.h Vladimir Murzin
2026-09-14 10:20 ` [PATCH 12/38] arm64: gicv3: remove GIC_PRIO_PSR_I_SET Vladimir Murzin
2026-09-14 10:20 ` [PATCH 13/38] arm64: cpufeature: Remove system_has_prio_mask_debugging() Vladimir Murzin
2026-09-14 10:20 ` [PATCH 14/38] arm64: irqflags: Switch to CONFIG_DEBUG_IRQFLAGS Vladimir Murzin
2026-09-14 10:20 ` [PATCH 15/38] arm64: Kconfig: Remove CONFIG_ARM64_DEBUG_PRIORITY_MASKING Vladimir Murzin
2026-09-14 10:20 ` [PATCH 16/38] efi/runtime-wrappers: Permit architectures to override IRQ flags checks Vladimir Murzin
2026-09-14 10:20 ` [PATCH 17/38] arm64/efi: Implement override for " Vladimir Murzin
2026-09-14 10:20 ` [PATCH 18/38] arm64: booting: Document boot requirements for FEAT_NMI Vladimir Murzin
2026-09-14 10:20 ` [PATCH 19/38] arm64: sysreg: Add definitions for immediate versions of MSR ALLINT Vladimir Murzin
2026-09-14 10:20 ` [PATCH 20/38] arm64: probes: Reject stepping over ALLINT Vladimir Murzin
2026-09-16  8:53   ` Jinjie Ruan
2026-09-14 10:20 ` [PATCH 21/38] arm64: ptrace: Add PSR_ALLINT_BIT Vladimir Murzin
2026-09-14 10:20 ` [PATCH 22/38] arm64: idreg: Add an override for FEAT_NMI Vladimir Murzin
2026-09-14 10:20 ` [PATCH 23/38] arm64: cpufeature: Detect PE support " Vladimir Murzin
2026-09-16  9:22   ` Jinjie Ruan
2026-09-21 13:53     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 24/38] arm64: nmi: Manage masking for superpriority interrupts Vladimir Murzin
2026-09-17 11:41   ` Jinjie Ruan
2026-09-21 14:23     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 25/38] arm64: irq: Report FEAT_NMI masking local IRQs Vladimir Murzin
2026-09-14 10:20 ` [PATCH 26/38] arm64: nmi: Add handling of superpriority interrupts as NMIs Vladimir Murzin
2026-09-17 11:37   ` Jinjie Ruan
2026-09-21 14:16     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 27/38] arm64: suspend: Always initialise PSTATE.ALLINT Vladimir Murzin
2026-09-14 10:20 ` [PATCH 28/38] arm64/efi: Add ALLINT to IRQ flags checks Vladimir Murzin
2026-09-14 10:20 ` [PATCH 29/38] arm64: kprobes: Disable NMIs Vladimir Murzin
2026-09-14 10:20 ` [PATCH 30/38] arm64: smp: Abstract SGI and LPI operations Vladimir Murzin
2026-09-16  9:01   ` Jinjie Ruan
2026-09-21 13:44     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 31/38] arm64: smp: Fall back to IRQ when IPI NMI request fails Vladimir Murzin
2026-09-14 10:20 ` [PATCH 32/38] arm64: nmi: Add Kconfig for NMI Vladimir Murzin
2026-09-16  9:06   ` Jinjie Ruan
2026-09-21 13:47     ` Vladimir Murzin
2026-09-14 10:20 ` [PATCH 33/38] irqchip/gic-v3: Rename nmi to pseudo_nmi Vladimir Murzin
2026-09-14 10:20 ` [PATCH 34/38] irqchip/gic-v3: Implement FEAT_GICv3_NMI support Vladimir Murzin
2026-09-14 10:20 ` [PATCH 35/38] arm64: smp: Add NMI support for LPI-backed IPIs Vladimir Murzin
2026-09-14 10:21 ` [PATCH 36/38] genirq: Trust local irqchip when considering IRQ for NMI Vladimir Murzin
2026-09-17 12:06   ` Jinjie Ruan
2026-09-14 10:21 ` [PATCH 37/38] genirq: Do not call add_interrupt_randomness() in NMI context Vladimir Murzin
2026-09-17 11:55   ` Jinjie Ruan
2026-09-14 10:21 ` [PATCH 38/38] irqchip/gic-v5: Add NMI support Vladimir Murzin
2026-10-24  4:20 ` [PATCH 00/38] arm64: Add support for FEAT_NMI Ashok Raj
2026-10-26 19:25   ` Ashok Raj
2026-10-27  9:42     ` Marc Zyngier
2026-10-27 11:56   ` Marc Zyngier [this message]
2026-10-27  6:39 ` 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=86tsm7xsp2.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=ashok.raj@oss.qualcomm.com \
    --cc=ashoraj@qti.qualcomm.com \
    --cc=catalin.marinas@arm.com \
    --cc=liaochang1@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lpieralisi@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=ruanjinjie@huawei.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