From: Niklas Cassel <cassel@kernel.org>
To: Damien Le Moal <dlemoal@kernel.org>
Cc: linux-nvme@lists.infradead.org, Keith Busch <kbusch@kernel.org>,
Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
Chaitanya Kulkarni <kch@nvidia.com>
Subject: Re: [PATCH 3/4] nvmet: pci-epf: Cleanup nvmet_pci_epf_raise_irq()
Date: Thu, 8 May 2025 15:07:42 +0200 [thread overview]
Message-ID: <aBysnmAu_ik89fse@ryzen> (raw)
In-Reply-To: <20250508065745.389199-4-dlemoal@kernel.org>
On Thu, May 08, 2025 at 03:57:44PM +0900, Damien Le Moal wrote:
> There is no point in taking the controller irq_lock and calling
> nvmet_pci_epf_should_raise_irq() for a completion queue which does not
> have IRQ enabled (NVMET_PCI_EPF_Q_IRQ_ENABLED flag is not set).
> Move the test for the NVMET_PCI_EPF_Q_IRQ_ENABLED flag out of
> nvmet_pci_epf_should_raise_irq() to the top of nvmet_pci_epf_raise_irq()
> to return early when no IRQ should be raised.
>
> Also, use dev_err_ratelimited() to avoid a message storm under load when
> raising IRQs is failing.
>
> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
> ---
> drivers/nvme/target/pci-epf.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/nvme/target/pci-epf.c b/drivers/nvme/target/pci-epf.c
> index 859953041da8..34dd73d6457c 100644
> --- a/drivers/nvme/target/pci-epf.c
> +++ b/drivers/nvme/target/pci-epf.c
> @@ -596,9 +596,6 @@ static bool nvmet_pci_epf_should_raise_irq(struct nvmet_pci_epf_ctrl *ctrl,
> struct nvmet_pci_epf_irq_vector *iv = cq->iv;
> bool ret;
>
> - if (!test_bit(NVMET_PCI_EPF_Q_IRQ_ENABLED, &cq->flags))
> - return false;
> -
> /* IRQ coalescing for the admin queue is not allowed. */
> if (!cq->qid)
> return true;
> @@ -625,7 +622,8 @@ static void nvmet_pci_epf_raise_irq(struct nvmet_pci_epf_ctrl *ctrl,
> struct pci_epf *epf = nvme_epf->epf;
> int ret = 0;
>
> - if (!test_bit(NVMET_PCI_EPF_Q_LIVE, &cq->flags))
> + if (!test_bit(NVMET_PCI_EPF_Q_LIVE, &cq->flags) ||
> + !test_bit(NVMET_PCI_EPF_Q_IRQ_ENABLED, &cq->flags))
> return;
>
> mutex_lock(&ctrl->irq_lock);
> @@ -658,7 +656,9 @@ static void nvmet_pci_epf_raise_irq(struct nvmet_pci_epf_ctrl *ctrl,
> }
>
> if (ret)
> - dev_err(ctrl->dev, "Failed to raise IRQ (err=%d)\n", ret);
> + dev_err_ratelimited(ctrl->dev,
> + "CQ[%u]: Failed to raise IRQ (err=%d)\n",
> + cq->qid, ret);
>
> unlock:
> mutex_unlock(&ctrl->irq_lock);
> --
> 2.49.0
>
>
Nit: since we no longer perform the NVMET_PCI_EPF_Q_IRQ_ENABLED check in
nvmet_pci_epf_should_raise_irq(), should we rename the function to something
else? nvmet_pci_epf_irq_allowed() ? Any ideas ?
Reviewed-by: Niklas Cassel <cassel@kernel.org>
next prev parent reply other threads:[~2025-05-08 14:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-08 6:57 [PATCH 0/4] nvmet pci-epf fixes Damien Le Moal
2025-05-08 6:57 ` [PATCH 1/4] nvmet: pci-epf: Clear completion queue IRQ flag on delete Damien Le Moal
2025-05-08 13:07 ` Niklas Cassel
2025-05-08 23:13 ` Damien Le Moal
2025-05-09 13:14 ` Niklas Cassel
2025-05-08 6:57 ` [PATCH 2/4] nvmet: pci-epf: Do not fall back to using INTX if not supported Damien Le Moal
2025-05-08 13:07 ` Niklas Cassel
2025-05-08 23:14 ` Damien Le Moal
2025-05-08 6:57 ` [PATCH 3/4] nvmet: pci-epf: Cleanup nvmet_pci_epf_raise_irq() Damien Le Moal
2025-05-08 13:07 ` Niklas Cassel [this message]
2025-05-08 23:16 ` Damien Le Moal
2025-05-08 6:57 ` [PATCH 4/4] nvmet: pci-epf: Improve debug message Damien Le Moal
2025-05-08 13:07 ` Niklas Cassel
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=aBysnmAu_ik89fse@ryzen \
--to=cassel@kernel.org \
--cc=dlemoal@kernel.org \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=kch@nvidia.com \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.