mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
nvmet: pci-epf: do not fall back to using INTX if not supported
Some endpoint PCIe controllers do not support raising legacy INTX interrupts. This support is indicated by the intx_capable field of struct pci_epc_features. Modify nvmet_pci_epf_raise_irq() to not automatically fallback to trying raising an INTX interrupt after an MSI or MSI-X error if the controller does not support INTX. Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
85adf2094a
commit
2c3a6f6a28
|
|
@ -636,14 +636,16 @@ static void nvmet_pci_epf_raise_irq(struct nvmet_pci_epf_ctrl *ctrl,
|
|||
switch (nvme_epf->irq_type) {
|
||||
case PCI_IRQ_MSIX:
|
||||
case PCI_IRQ_MSI:
|
||||
/*
|
||||
* If we fail to raise an MSI or MSI-X interrupt, it is likely
|
||||
* because the host is using legacy INTX IRQs (e.g. BIOS,
|
||||
* grub), but we can fallback to the INTX type only if the
|
||||
* endpoint controller supports this type.
|
||||
*/
|
||||
ret = pci_epc_raise_irq(epf->epc, epf->func_no, epf->vfunc_no,
|
||||
nvme_epf->irq_type, cq->vector + 1);
|
||||
if (!ret)
|
||||
if (!ret || !nvme_epf->epc_features->intx_capable)
|
||||
break;
|
||||
/*
|
||||
* If we got an error, it is likely because the host is using
|
||||
* legacy IRQs (e.g. BIOS, grub).
|
||||
*/
|
||||
fallthrough;
|
||||
case PCI_IRQ_INTX:
|
||||
ret = pci_epc_raise_irq(epf->epc, epf->func_no, epf->vfunc_no,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user