From: Radu Rendec <rrendec@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: "Manivannan Sadhasivam" <mani@kernel.org>,
"Daniel Tsai" <danielsftsai@google.com>,
"Marek Behún" <kabel@kernel.org>,
"Krishna Chaitanya Chundru" <quic_krichai@quicinc.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Jingoo Han" <jingoohan1@gmail.com>,
"Brian Masney" <bmasney@redhat.com>,
"Eric Chanudet" <echanude@redhat.com>,
"Alessandro Carminati" <acarmina@redhat.com>,
"Jared Kangas" <jkangas@redhat.com>,
"Jon Hunter" <jonathanh@nvidia.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
x86@kernel.org, linux-tegra@vger.kernel.org
Subject: [PATCH] fixup! genirq: Add interrupt redirection infrastructure
Date: Fri, 9 Jan 2026 12:52:27 -0500 [thread overview]
Message-ID: <20260109175227.1136782-1-rrendec@redhat.com> (raw)
The previous version of this patch has two related bugs:
- irq_chip_redirect_set_affinity() doesn't update the effective affinity
mask, which triggers the warning in irq_validate_effective_affinity().
This bug was reported at [1].
- As a result, the cpumask_test_cpu(smp_processor_id(), m) condition in
demux_redirect_remote() is always false, and the interrupt is always
redirected, even if it's already running on the target CPU.
The solution is not ideal because it may lie about the effective
affinity of the demultiplexed ("child") interrupt. If the requested
affinity mask includes multiple CPUs, the effective affinity, in
reality, is the intersection between the requested mask and the
demultiplexing ("parent") interrupt's effective affinity mask, plus
the first CPU in the requested mask.
Accurately describing the effective affinity of the demultiplexed
interrupt is not trivial because it requires keeping track of the
demultiplexing interrupt's effective affinity. That is tricky in the
context of CPU hot(un)plugging, where interrupt migration ordering is
not guaranteed. The solution in the original version of the patch,
which stored the first CPU of the demultiplexing interrupt's effective
affinity in the `target_cpu` field, has its own drawbacks and
limitations.
[1] https://lore.kernel.org/all/44509520-f29b-4b8a-8986-5eae3e022eb7@nvidia.com/
Signed-off-by: Radu Rendec <rrendec@redhat.com>
---
kernel/irq/chip.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 433f1dd2b0ca7..35bc17bc369e0 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -1493,6 +1493,8 @@ int irq_chip_redirect_set_affinity(struct irq_data *data, const struct cpumask *
struct irq_redirect *redir = &irq_data_to_desc(data)->redirect;
WRITE_ONCE(redir->target_cpu, cpumask_first(dest));
+ irq_data_update_effective_affinity(data, dest);
+
return IRQ_SET_MASK_OK;
}
EXPORT_SYMBOL_GPL(irq_chip_redirect_set_affinity);
--
2.52.0
next reply other threads:[~2026-01-09 17:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-09 17:52 Radu Rendec [this message]
2026-01-11 21:52 ` [PATCH] fixup! genirq: Add interrupt redirection infrastructure Thomas Gleixner
2026-01-12 20:24 ` Radu Rendec
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=20260109175227.1136782-1-rrendec@redhat.com \
--to=rrendec@redhat.com \
--cc=acarmina@redhat.com \
--cc=bhelgaas@google.com \
--cc=bmasney@redhat.com \
--cc=danielsftsai@google.com \
--cc=echanude@redhat.com \
--cc=jingoohan1@gmail.com \
--cc=jkangas@redhat.com \
--cc=jonathanh@nvidia.com \
--cc=kabel@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=quic_krichai@quicinc.com \
--cc=robh@kernel.org \
--cc=tglx@linutronix.de \
--cc=x86@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