Index: xen-unstable.hg/xen/arch/ia64/xen/faults.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/faults.c	2007-12-19 11:24:19.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/faults.c	2007-12-19 12:22:12.000000000 +0900
@@ -200,24 +200,31 @@ void ia64_do_page_fault(unsigned long ad
 		       attr & (EFI_MEMORY_UC|EFI_MEMORY_WC|EFI_MEMORY_WT)) )
 			attr = 0;
 	}
-	if (attr)
+	else if (address == 0xe00000007fe21720) {
+		attr = EFI_MEMORY_UC;
+	}
+	if (attr) {
+		printk("efi_mem_attributes(0xe00000007fe21720)=0x%016lx\n",
+		       efi_mem_attributes(address &
+					  ~__IA64_EFI_CACHED_OFFSET));
 		printk("EFI memory fault addr=0x%016lx attr=0x%016lx "
 		       "kr2=0x%016lx guest_mode=%d rr[%d]=0x%016lx\n",
 		       address, attr, ia64_get_kr(2), guest_mode(regs),
 		       address >> 61,
 		       ia64_get_rr(address & (address >> 61 << 61)));
+	}
 	if (attr && guest_mode(regs)) {
+		old_attr = attr;
 		/* Removing the following line caues
 		 * an unhandled page_fault in dom0 on my hardware,
 		 * similar to what Alex Williamson is seeing
 		 * without this patch. */
-		old_attr = attr;
 		attr = 0;
 	}
 
 	fault = vcpu_translate(current, address, is_data, &pteval,
 	                       &itir, &iha, attr);
-	if (old_attr)
+	if (old_attr || attr)
 		printk("EFI memory fault: fault=%d is_data=%d "
 		       "pteval=0x%016lx\n", fault, is_data, pteval);
 	if (fault == IA64_NO_FAULT || fault == IA64_USE_TLB) {
