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
|