• Michael S. Tsirkin's avatar
    virtio_pci: use irq to detect interrupt support · 2145ab51
    Michael S. Tsirkin authored
    commit 71491c54 ("virtio_pci: don't try to use intxif pin is zero")
    breaks virtio_pci on powerpc, when running as a qemu guest.
    
    vp_find_vqs() bails out because pci_dev->pin == 0.
    
    But pci_dev->irq is populated correctly, so vp_find_vqs_intx() would
    succeed if we called it - which is what the code used to do.
    
    This seems to happen because pci_dev->pin is not populated in
    pci_assign_irq(). A PCI core bug? Maybe.
    
    However Linus said:
    	I really think that that is basically the only time you should use
    	that 'pci_dev->pin' thing: it basically exists not for "does this
    	device have an IRQ", but for "what is the routing of this irq on this
    	device".
    
    and
    	The correct way to check for "no irq" doesn't use NO_IRQ at all, it just does
    		if (dev->irq) ...
    
    so let's just check irq and be done with it.
    Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Reported-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Fixes: 71491c54 ("virtio_pci: don't try to use intxif pin is zero")
    Cc: "Angus Chen" <angus.chen@jaguarmicro.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Tested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    Message-Id: <20221012220312.308522-1-mst@redhat.com>
    2145ab51
virtio_pci_common.c 16.4 KB