A TLB entry shouldn't be inserted into VHPT
when its memory attribute field is 001 "software reserved".
Without this patch, a TLB fault expected by a guest OS is missing.
-- Kouya
Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
diff -r 14aeb7981e4e xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c Tue Mar 27 12:21:48 2007 -0600
+++ b/xen/arch/ia64/vmx/vmx_process.c Thu Mar 29 12:31:17 2007 +0900
@@ -437,6 +437,11 @@ vmx_hpw_miss(u64 vadr , u64 vec, REGS* r
if (!guest_vhpt_lookup(vhpt_adr, &pteval)) {
/* VHPT successfully read. */
if (pteval & _PAGE_P) {
+ if ((pteval & _PAGE_MA_MASK) == _PAGE_MA_ST) {
+ vcpu_set_isr(v, misr.val);
+ itlb_fault(v, vadr);
+ return IA64_FAULT;
+ }
vcpu_get_rr(v, vadr, &rr);
itir = rr & (RR_RID_MASK | RR_PS_MASK);
thash_purge_and_insert(v, pteval, itir, vadr, ISIDE_TLB);
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|