On Tue, 18 Mar 2025 17:29:21 +0000 Shivaprasad G Bhat <[email protected]> wrote:
> On POWER systems, when the device is behind the io expander, > not all PCI slots would have the PCI_INTERRUPT_LINE connected. > The firmware assigns a valid PCI_INTERRUPT_PIN though. In such > configuration, the irq_info ioctl currently advertizes the > irq count as 1 as the PCI_INTERRUPT_PIN is valid. > > The patch adds the additional check[1] if the irq is assigned > for the PIN which is done iff the LINE is connected. > > [1]: > https://lore.kernel.org/qemu-devel/[email protected]/ > > Signed-off-by: Shivaprasad G Bhat <[email protected]> > Suggested-By: Alex Williamson <[email protected]> > --- > drivers/vfio/pci/vfio_pci_core.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/vfio/pci/vfio_pci_core.c > b/drivers/vfio/pci/vfio_pci_core.c > index 586e49efb81b..4ce70f05b4a8 100644 > --- a/drivers/vfio/pci/vfio_pci_core.c > +++ b/drivers/vfio/pci/vfio_pci_core.c > @@ -734,6 +734,10 @@ static int vfio_pci_get_irq_count(struct > vfio_pci_core_device *vdev, int irq_typ > return 0; > > pci_read_config_byte(vdev->pdev, PCI_INTERRUPT_PIN, &pin); > +#if IS_ENABLED(CONFIG_PPC64) > + if (!vdev->pdev->irq) > + pin = 0; > +#endif > > return pin ? 1 : 0; > } else if (irq_type == VFIO_PCI_MSI_IRQ_INDEX) { > > See: https://lore.kernel.org/all/[email protected]/ Do we need to expand that to test !vdev->pdev->irq in vfio_config_init()? We don't allow a zero irq to be enabled in vfio_intx_enable(), so we might as well not report it as supported. I don't see why any of this needs to be POWER specific. Thanks, Alex
