diff options
author | djm@kirby.fc.hp.com <djm@kirby.fc.hp.com> | 2005-09-15 10:54:16 -0600 |
---|---|---|
committer | djm@kirby.fc.hp.com <djm@kirby.fc.hp.com> | 2005-09-15 10:54:16 -0600 |
commit | 839e47f78d54cdea12a297b30a57d08827de4f37 (patch) | |
tree | 38215286e9a6e0268141caa789cb5a0abd0c1cfb | |
parent | 5897cb493738d562bc2ea2519c7a83beaec25e02 (diff) | |
download | xen-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.c | 2 |
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; |