aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>2005-09-15 10:54:16 -0600
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>2005-09-15 10:54:16 -0600
commit839e47f78d54cdea12a297b30a57d08827de4f37 (patch)
tree38215286e9a6e0268141caa789cb5a0abd0c1cfb
parent5897cb493738d562bc2ea2519c7a83beaec25e02 (diff)
downloadxen-839e47f78d54cdea12a297b30a57d08827de4f37.tar.gz
xen-839e47f78d54cdea12a297b30a57d08827de4f37.tar.bz2
xen-839e47f78d54cdea12a297b30a57d08827de4f37.zip
This patch fixes a severe bug in vtlb, where domU may face machine crash
intermittently. Normally in page fault handler, the entry hit in vtlb shouldn't be injected back to vtlb again, not to say meaningless -1UL. After this fix, vtlb hit ratio also improves since guest svhpt entry may live longer. Signed-off-by Kevin Tian <kevin.tian@intel.com>
-rw-r--r--xen/arch/ia64/xen/vcpu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xen/arch/ia64/xen/vcpu.c b/xen/arch/ia64/xen/vcpu.c
index 8e846112f5..bbf59c579e 100644
--- a/xen/arch/ia64/xen/vcpu.c
+++ b/xen/arch/ia64/xen/vcpu.c
@@ -1721,7 +1721,7 @@ void vcpu_itc_no_srlz(VCPU *vcpu, UINT64 IorD, UINT64 vaddr, UINT64 pte, UINT64
// PAGE_SIZE mapping in the vhpt for now, else purging is complicated
else vhpt_insert(vaddr,pte,PAGE_SHIFT<<2);
#endif
- if (IorD & 0x4) return; // don't place in 1-entry TLB
+ if ((mp_pte == -1UL) || (IorD & 0x4)) return; // don't place in 1-entry TLB
if (IorD & 0x1) {
vcpu_set_tr_entry(&PSCBX(vcpu,itlb),pte,ps<<2,vaddr);
PSCBX(vcpu,itlb_pte) = mp_pte;