[PATCH v2 7/8] nvme-pci: add module parameter for default moderation mode

From: Luigi Rizzo
Date: Sun Nov 16 2025 - 13:30:39 EST


The following module parameter enables moderation at boot time for nvme devices.

nvme.soft_moderation=1

It can be overridden at runtime via /proc/irq/*/*nvme*/soft_moderation.
See Documentation/core-api/irq/irq-moderation.rst for configuration.

Change-Id: Ib061737415c26b868e889d4d9953e1d25ca8fc4b
Signed-off-by: Luigi Rizzo <lrizzo@xxxxxxxxxx>
---
drivers/nvme/host/pci.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 72fb675a696f4..b9d7bce30061f 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -72,6 +72,8 @@
static_assert(MAX_PRP_RANGE / NVME_CTRL_PAGE_SIZE <=
(1 /* prp1 */ + NVME_MAX_NR_DESCRIPTORS * PRPS_PER_PAGE));

+DEFINE_IRQ_MODERATION_MODE_PARAMETER;
+
static int use_threaded_interrupts;
module_param(use_threaded_interrupts, int, 0444);

@@ -1989,6 +1991,7 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid, bool polled)
result = queue_request_irq(nvmeq);
if (result < 0)
goto release_sq;
+ IRQ_MODERATION_SET_DEFAULT_MODE(pci_irq_vector(to_pci_dev(dev->dev), vector));
}

set_bit(NVMEQ_ENABLED, &nvmeq->flags);
--
2.52.0.rc1.455.g30608eb744-goog