aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xen/drivers/passthrough/vtd/intremap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c
index 93218b6c09..059ebf5a24 100644
--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -129,7 +129,13 @@ static int ioapic_rte_to_remap_entry(struct iommu *iommu,
memcpy(&new_ire, iremap_entry, sizeof(struct iremap_entry));
if ( rte_upper )
+ {
+#if defined(__i386__) || defined(__x86_64__)
new_ire.lo.dst = (value >> 24) << 8;
+#else /* __ia64__ */
+ new_ire.lo.dst = value >> 16;
+#endif
+ }
else
{
*(((u32 *)&new_rte) + 0) = value;