diff -r 3fe11185adfb xen/arch/x86/shadow.c --- a/xen/arch/x86/shadow.c Sat Jul 01 09:37:24 2006 +0100 +++ b/xen/arch/x86/shadow.c Mon Jul 03 17:03:15 2006 +0800 @@ -1726,6 +1735,7 @@ static int resync_all(struct domain *d, { guest_l1_pgentry_t tmp_gl1e = guest_l1e_empty(); validate_pte_change(d, tmp_gl1e, sl1e_p); + unshadow_l1 = 1; continue; } #endif @@ -3676,20 +3686,19 @@ static inline int l2e_rw_fault( put_page_from_l1e(old_sl1e, d); } - l1_p[gpfn - start_gpfn] = sl1e; - if (rw) { /* shadow_mark_va_out_of_sync() need modificatin for 2M pages*/ if ( mfn_is_page_table(mfn) ) shadow_mark_va_out_of_sync_2mp(v, gpfn, mfn, l2e_get_paddr(sl2e) | (sizeof(l1_pgentry_t) * (gpfn - start_gpfn))); } + + l1_p[gpfn - start_gpfn] = sl1e; } unmap_domain_page(l1_p); *gl2e_p = gl2e; return 1; - } /*