On Tue, 18 Mar 2025 17:29:21 +0000 Shivaprasad G Bhat <sb...@linux.ibm.com> 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/20250131150201.048aa3bf.alex.william...@redhat.com/ > > Signed-off-by: Shivaprasad G Bhat <sb...@linux.ibm.com> > Suggested-By: Alex Williamson <alex.william...@redhat.com> > --- > 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/20250311230623.1264283-1-alex.william...@redhat.com/ 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