[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] ioemu: msi/msix clean up on hotplug remove



The passthrough MSI/MSI-X should be unbound and unmapped when
unregister_real_device is called, this patch fix this.

Signed-off-by: Qing He <qing.he@xxxxxxxxx>

diff --git a/hw/pass-through.c b/hw/pass-through.c
index 4a86309..308bcc3 100644
--- a/hw/pass-through.c
+++ b/hw/pass-through.c
@@ -3753,20 +3753,14 @@ int unregister_real_device(int php_slot)
                                        e_device, e_intx, 0);
         if ( rc < 0 )
         {
-            /* TBD: unregister device in case of an error */
             PT_LOG("Error: Unbinding of interrupt failed! rc=%d\n", rc);
         }
     }
-    else if (assigned_device->msi_trans_en)
-    {
-        rc = xc_domain_unbind_pt_irq(xc_handle, domid, 
assigned_device->msi->pirq,
-                                     PT_IRQ_TYPE_MSI_TRANSLATE, 0,
-                                     e_device, e_intx, 0);
-        if (rc < 0)
-            PT_LOG("Error: Unbinding pt irq for MSI-INTx failed! rc=%d\n", rc);
-    }
 
-    /* TODO: unmap passthrough MSI and MSI-X irqs */
+    if (assigned_device->msi)
+        pt_msi_disable(assigned_device);
+    if (assigned_device->msix)
+        pt_msix_disable(assigned_device);
 
     /* delete all emulated config registers */
     pt_config_delete(assigned_device);

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.