diff options
-rw-r--r-- | xen/drivers/passthrough/vtd/intremap.c | 6 |
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; |