Qing He
2009-Mar-11 14:28 UTC
[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@intel.com> 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@lists.xensource.com http://lists.xensource.com/xen-devel