uio: uio_pci_generic: don't fail probe if pdev->irq equals to IRQ_NOTCONNECTED
authorJie Li <jie6.li@samsung.com>
Mon, 1 Feb 2021 04:25:59 +0000 (04:25 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Feb 2021 11:25:32 +0000 (12:25 +0100)
Some devices use 255 as default value of Interrupt Line register, and this
maybe causes pdev->irq is set as IRQ_NOTCONNECTED in some scenarios. For
example, NVMe controller connects to Intel Volume Management Device (VMD).
In this situation, IRQ_NOTCONNECTED means INTx line is not connected, not
fault. If bind uio_pci_generic to these devices, uio frame will return
-ENOTCONN through request_irq.

This patch allows binding uio_pci_generic to device with dev->irq of
IRQ_NOTCONNECTED.

Acked-by: Kyungsan Kim <ks0204.kim@samsung.com>
Signed-off-by: Jie Li <jie6.li@samsung.com>
Link: https://lore.kernel.org/r/1612153559-17028-1-git-send-email-jie6.li@samsung.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_pci_generic.c

index b8e44d16279fbc0f77c3bf41346eb83d2b163c18..c7d681fef198d6735dcbe0d2afcdaaed611a4b99 100644 (file)
@@ -92,7 +92,7 @@ static int probe(struct pci_dev *pdev,
        gdev->info.version = DRIVER_VERSION;
        gdev->info.release = release;
        gdev->pdev = pdev;
-       if (pdev->irq) {
+       if (pdev->irq && (pdev->irq != IRQ_NOTCONNECTED)) {
                gdev->info.irq = pdev->irq;
                gdev->info.irq_flags = IRQF_SHARED;
                gdev->info.handler = irqhandler;