]> www.infradead.org Git - nvme.git/commit
nvmet: pci-epf: Do not add an IRQ vector if not needed nvme-6.14 nvme-6.14-2025-03-13
authorDamien Le Moal <dlemoal@kernel.org>
Thu, 6 Mar 2025 08:55:49 +0000 (17:55 +0900)
committerKeith Busch <kbusch@kernel.org>
Mon, 10 Mar 2025 17:12:16 +0000 (10:12 -0700)
commit39393f5c5c795992507aa5005a9d58396a5b07f1
treec6c628a903f0ac1dfe517f2c320ce492cccd785c
parentbf9b8020a80d32f6aa80591297a087d0519dc931
nvmet: pci-epf: Do not add an IRQ vector if not needed

The function nvmet_pci_epf_create_cq() always unconditionally calls
nvmet_pci_epf_add_irq_vector() to add an IRQ vector for a completion
queue. But this is not correct if the host requested the creation of a
completion queue for polling, without an IRQ vector specified (i.e. the
flag NVME_CQ_IRQ_ENABLED is not set).

Fix this by calling nvmet_pci_epf_add_irq_vector() and setting the queue
flag NVMET_PCI_EPF_Q_IRQ_ENABLED for the cq only if NVME_CQ_IRQ_ENABLED
is set. While at it, also fix the error path to add the missing removal
of the added IRQ vector if nvmet_cq_create() fails.

Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/pci-epf.c