[PATCH v16 9/9] docs: add managed_irq_strict flag to isolcpus

From: Aaron Tomlin

Date: Thu Sep 10 2026 - 13:51:29 EST


From: Daniel Wagner <wagi@xxxxxxxxxx>

The managed_irq_strict flag informs multiqueue device drivers where to
place hardware queues and managed interrupt vectors. Document this new
flag in the isolcpus command-line argument description, describe its
relationship and precedence with respect to the legacy managed_irq flag,
and document HK_TYPE_MANAGED_IRQ_STRICT in the core housekeeping guide.

Signed-off-by: Daniel Wagner <wagi@xxxxxxxxxx>
Reviewed-by: Hannes Reinecke <hare@xxxxxxx>
Co-developed-by: Aaron Tomlin <atomlin@xxxxxxxxxxx>
Signed-off-by: Aaron Tomlin <atomlin@xxxxxxxxxxx>
---
.../admin-guide/kernel-parameters.txt | 37 ++++++++++++++++++-
Documentation/core-api/housekeeping.rst | 6 ++-
2 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 68647ff4bdd2..eb608e5139a6 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -2822,7 +2822,6 @@ Kernel parameters
"number of CPUs in system - 1".

managed_irq
-
Isolate from being targeted by managed interrupts
which have an interrupt mask containing isolated
CPUs. The affinity of managed interrupts is
@@ -2845,6 +2844,42 @@ Kernel parameters
housekeeping CPUs has no influence on those
queues.

+ managed_irq_strict
+ Strictly restrict multiqueue hardware queue
+ allocation and managed interrupt affinity to
+ housekeeping CPUs. Unlike the best-effort
+ managed_irq flag, this option guarantees that
+ managed interrupts and multiqueue block device
+ queues are never created for or mapped to isolated
+ CPUs.
+
+ In the block layer (blk-mq), device queue allocation
+ and CPU-to-queue mappings are restricted to
+ housekeeping CPUs. For devices using managed
+ interrupts, hardware completion interrupts are routed
+ exclusively to housekeeping cores, shielding isolated
+ CPUs from I/O interruptions even if they initiated the
+ request.
+
+ If both managed_irq and managed_irq_strict are
+ specified, managed_irq_strict takes precedence.
+
+ Note: Using managed_irq_strict restricts the number
+ of allocated hardware queues to match the number of
+ housekeeping CPUs for single-set drivers. This
+ prevents MSI-X vector exhaustion and forces isolated
+ CPUs to share submission queues.
+
+ Note: Offlining housekeeping CPUs which serve
+ isolated CPUs will fail. The isolated CPUs must
+ be offlined before offlining the housekeeping
+ CPUs.
+
+ Note: When I/O is submitted by an application on
+ an isolated CPU, the hardware completion
+ interrupt is handled entirely by a housekeeping
+ CPU.
+
The format of <cpu-list> is described above.

iucv= [HW,NET]
diff --git a/Documentation/core-api/housekeeping.rst b/Documentation/core-api/housekeeping.rst
index ccb0a88b9cb3..6d08c71e6c0e 100644
--- a/Documentation/core-api/housekeeping.rst
+++ b/Documentation/core-api/housekeeping.rst
@@ -23,7 +23,7 @@ CPU. It is simply a CPU that can execute housekeeping work. There must
always be at least one online housekeeping CPU at any time. The CPUs that
are not isolated are automatically assigned as housekeeping.

-Housekeeping is currently divided in four features described
+Housekeeping is currently divided in five features described
by the ``enum hk_type type``:

1. HK_TYPE_DOMAIN matches the work moved away by scheduler domain
@@ -44,6 +44,10 @@ by the ``enum hk_type type``:
to HK_TYPE_DOMAIN except it ignores the isolation performed by
cpusets.

+5. HK_TYPE_MANAGED_IRQ_STRICT matches the multiqueue block devices and
+ managed IRQs strictly restricted to housekeeping CPUs through
+ ``isolcpus=managed_irq_strict``.
+

Housekeeping cpumasks
=================================
--
2.55.0