[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN][SHADOW] Fix early-unshadow logic.
# HG changeset patch # User George Dunlap <gdunlap@xxxxxxxxxxxxx> # Date 1172679082 18000 # Node ID 7b35a9682d81319553353f767b35d9c98c12ae19 # Parent d39dcdb9cca36d27d0c509640a15c03800bf706e [XEN][SHADOW] Fix early-unshadow logic. Make sure to reset the early-unshadow logic when we do a fast-path propagate or when we emulate a non-zero write. Signed-off-by: George Dunlap <gdunlap@xxxxxxxxxxxxx> --- xen/arch/x86/mm/shadow/multi.c | 7 +++++++ 1 files changed, 7 insertions(+) diff -r d39dcdb9cca3 -r 7b35a9682d81 xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Wed Feb 28 14:44:52 2007 +0000 +++ b/xen/arch/x86/mm/shadow/multi.c Wed Feb 28 11:11:22 2007 -0500 @@ -2667,6 +2667,7 @@ static int sh_page_fault(struct vcpu *v, * a not-present fault (by flipping two bits). */ ASSERT(regs->error_code & PFEC_page_present); regs->error_code ^= (PFEC_reserved_bit|PFEC_page_present); + reset_early_unshadow(v); perfc_incrc(shadow_fault_fast_gnp); SHADOW_PRINTK("fast path not-present\n"); return 0; @@ -3961,6 +3962,8 @@ sh_x86_emulate_write(struct vcpu *v, uns /* If we are writing zeros to this page, might want to unshadow */ if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) ) check_for_early_unshadow(v, mfn); + else + reset_early_unshadow(v); sh_mark_dirty(v->domain, mfn); @@ -4015,6 +4018,8 @@ sh_x86_emulate_cmpxchg(struct vcpu *v, u /* If we are writing zeros to this page, might want to unshadow */ if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) ) check_for_early_unshadow(v, mfn); + else + reset_early_unshadow(v); sh_mark_dirty(v->domain, mfn); @@ -4057,6 +4062,8 @@ sh_x86_emulate_cmpxchg8b(struct vcpu *v, /* If we are writing zeros to this page, might want to unshadow */ if ( *(u32 *)addr == 0 ) check_for_early_unshadow(v, mfn); + else + reset_early_unshadow(v); sh_mark_dirty(v->domain, mfn); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |