Re: [PATCH 6/6] genirq: soft_moderation: implement per-driver defaults (nvme and vfio)
From: Luigi Rizzo
Date: Thu Nov 13 2025 - 05:42:51 EST
On Thu, Nov 13, 2025 at 11:18 AM Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>
> On Wed, Nov 12 2025 at 19:24, Luigi Rizzo wrote:
...
> > --- 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));
>
> What's the point of this IRQ_MODERATION_SET_DEFAULT_MODE() wrapper?
I wanted to avoid exposing the module parameter name,
so that adding support in a driver is mechanical and we can
change the name in one place for all (during this review or later).
Ideally I would have preferred some generic parameter
irq_moderation.enable_on="nvme vfio ..."
to set defaults without having to patch individual drivers.
But I have not found a way to go from the irq_desc to the driver's name
(desc->name is often renamed especially for NICs)
cheers
luigi