diff -r 59be60d5664b xen/arch/ia64/xen/mm.c --- a/xen/arch/ia64/xen/mm.c Tue Jun 20 10:40:14 2006 -0600 +++ b/xen/arch/ia64/xen/mm.c Tue Jun 20 11:43:01 2006 -0600 @@ -471,6 +471,14 @@ u64 translate_domain_pte(u64 pteval, u64 pteval2 |= (pteval & _PAGE_ED); pteval2 |= _PAGE_PL_2; // force PL0->2 (PL3 is unaffected) pteval2 = (pteval & ~_PAGE_PPN_MASK) | pteval2; + /* + * Don't let non-dom0 domains map uncached addresses. This can + * happen when domU tries to touch i/o port space. Also prevents + * possible address aliasing issues. + */ + if (d != dom0 && pteval2 & _PAGE_MA_MASK) + pteval2 &= ~_PAGE_MA_MASK; + return pteval2; }