Index: 20071119-ia64/xen/arch/ia64/xen/faults.c
===================================================================
--- 20071119-ia64.orig/xen/arch/ia64/xen/faults.c	2007-11-25 21:23:12.000000000 -0700
+++ 20071119-ia64/xen/arch/ia64/xen/faults.c	2007-11-25 21:23:13.000000000 -0700
@@ -166,7 +166,7 @@
 	unsigned long is_data = !((isr >> IA64_ISR_X_BIT) & 1UL);
 	unsigned long attr = 0;
 	IA64FAULT fault;
-	int is_ptc_l_needed = 0;
+	int is_ptc_l_needed = 0, kr2;
 	ia64_itir_t _itir = {.itir = itir};
 
 	if ((isr & IA64_ISR_SP)
@@ -218,9 +218,11 @@
 		 ia64_get_rr(6) == XEN_EFI_RID)
 		attr = EFI_MEMORY_UC;
 	if (attr)
+		kr2 = ia64_get_kr(2);
+	if (attr && (kr2 & 0xff) == 0x02)
 		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, attr, kr2, guest_mode(regs),
 		       address >> 61, ia64_get_rr(address >> 61));
 	if (attr && guest_mode(regs)) {
 		/* Removing the following line caues
@@ -240,6 +242,10 @@
 		                                &(_itir.itir), &entry, attr);
 		vcpu_itc_no_srlz(current, is_data ? 2 : 1, address,
 		                 m_pteval, pteval, _itir.itir, &entry, attr);
+		if (attr && (kr2 & 0xff) == 0x02)
+			printk("EFI memory fault m_pteval=0x%016lx "
+			       "pteval=0x%016lx _itir.itir=0x%016lx\n",
+			       m_pteval, pteval, _itir.itir);
 		if ((fault == IA64_USE_TLB && !current->arch.dtlb.pte.p) ||
 		     (!attr && p2m_entry_retry(&entry))) {
 			/* dtlb has been purged in-between.  This dtlb was
@@ -254,6 +260,8 @@
 		}
 		return;
 	}
+	if (attr && (kr2 & 0xff) == 0x02)
+		printk("EFI memory fault: wtf\n");
 
 	if (is_ptc_l_needed)
 		vcpu_ptc_l(current, address, _itir.ps);
