Fix the error of translation from int remapping table entry(IRTE) to MSI
msg. This error may write wrong IRTE back to the VTd hardware, and
block physical interrupts.
Signed-Off-By: Zhai Edwin <edwin.zhai@xxxxxxxxx>
--
best rgds,
edwin
Index: xen-dev/xen/drivers/passthrough/vtd/intremap.c
===================================================================
--- xen-dev.orig/xen/drivers/passthrough/vtd/intremap.c
+++ xen-dev/xen/drivers/passthrough/vtd/intremap.c
@@ -468,8 +468,12 @@ static int remap_entry_to_msi_msg(
MSI_ADDR_DESTMODE_LOGIC) |
((iremap_entry->lo.dlm != dest_LowestPrio) ?
MSI_ADDR_REDIRECTION_CPU:
- MSI_ADDR_REDIRECTION_LOWPRI) |
- iremap_entry->lo.dst >> 8;
+ MSI_ADDR_REDIRECTION_LOWPRI);
+ if ( x2apic_enabled )
+ msg->dest32 = iremap_entry->lo.dst;
+ else
+ msg->address_lo |=
+ ((iremap_entry->lo.dst >> 8) & 0xff ) << MSI_ADDR_DEST_ID_SHIFT;
msg->data =
MSI_DATA_TRIGGER_EDGE |
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|