When vfio realize fails, INTx isn't disabled if it has been enabled. This may confuse host side with unhandled interrupt report.
Add a new label to be used for vfio_intx_enable() failed case. Fixes: a9994687cb9b ("vfio/display: core & wireup") Fixes: b290659fc3dd ("hw/vfio/display: add ramfb support") Fixes: c62a0c7ce34e ("vfio/display: add xres + yres properties") Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com> --- hw/vfio/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index ab6645ba60af..54a8179d1c64 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3167,7 +3167,7 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) kvm_irqchip_add_change_notifier(&vdev->irqchip_change_notifier); ret = vfio_intx_enable(vdev, errp); if (ret) { - goto out_deregister; + goto out_intx_disable; } } @@ -3220,6 +3220,8 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) return; out_deregister: + vfio_disable_interrupts(vdev); +out_intx_disable: pci_device_set_intx_routing_notifier(&vdev->pdev, NULL); if (vdev->irqchip_change_notifier.notify) { kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); -- 2.34.1