mirror of
https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10.git
synced 2026-09-09 00:07:04 +08:00
vfio/pci: Virtualize zero INTx PIN if no pdev->irq
JIRA: https://issues.redhat.com/browse/RHEL-118213 commit 2bd42b03ab6b04dde1753bd6b38eeca5c70f3941 Author: Alex Williamson <alex.williamson@redhat.com> Date: Thu Mar 20 13:41:42 2025 -0600 vfio/pci: Virtualize zero INTx PIN if no pdev->irq Typically pdev->irq is consistent with whether the device itself supports INTx, where device support is reported via the PIN register. Therefore the PIN register is often already zero if pdev->irq is zero. Recently virtualization of the PIN register was expanded to include the case where the device supports INTx but the platform does not route the interrupt. This is reported by a value of IRQ_NOTCONNECTED on some architectures. Other architectures just report zero for pdev->irq. We already disallow INTx setup if pdev->irq is zero, therefore add this to the PIN register virtualization criteria so that a consistent view is provided to userspace through virtualized config space and ioctls. Reported-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> Link: https://lore.kernel.org/all/174231895238.2295.12586708771396482526.stgit@linux.ibm.com/ Tested-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> Link: https://lore.kernel.org/r/20250320194145.2816379-1-alex.williamson@redhat.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
@@ -1815,7 +1815,7 @@ int vfio_config_init(struct vfio_pci_core_device *vdev)
|
||||
}
|
||||
|
||||
if (!IS_ENABLED(CONFIG_VFIO_PCI_INTX) || vdev->nointx ||
|
||||
vdev->pdev->irq == IRQ_NOTCONNECTED)
|
||||
!vdev->pdev->irq || vdev->pdev->irq == IRQ_NOTCONNECTED)
|
||||
vconfig[PCI_INTERRUPT_PIN] = 0;
|
||||
|
||||
ret = vfio_cap_init(vdev);
|
||||
|
||||
Reference in New Issue
Block a user