aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-10-21 09:53:34 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-10-21 09:53:34 +0100
commit519c6bedbf32f92042df4e445ebb2b3a6be91d0f (patch)
tree3853c112cc5a741cd9606b4595d3cff46b4298b6
parent4bd9f67f5cb1221b2294c9e762f91ee07700d537 (diff)
downloadxen-519c6bedbf32f92042df4e445ebb2b3a6be91d0f.tar.gz
xen-519c6bedbf32f92042df4e445ebb2b3a6be91d0f.tar.bz2
xen-519c6bedbf32f92042df4e445ebb2b3a6be91d0f.zip
Fix ioapic_rte_to_remap_entry() on IA64.
Signed-off-by: Anthony Xu <anthony.xu@intel.com> Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
-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;