From d067e4b0775b296578740a607a82a3940b7f30ac Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 20 Jun 2008 18:41:50 +0100 Subject: [PATCH] Out-of-sync L1 shadows: always unsync pages on guest writes. Signed-off-by: Gianluca Guida --- xen/arch/x86/mm/shadow/multi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index f9594f8fc7..4253f57328 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -3288,6 +3288,13 @@ static int sh_page_fault(struct vcpu *v, return 0; } +#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC) + /* Always unsync when writing to L1 page tables. */ + if ( sh_mfn_is_a_page_table(gmfn) + && ft == ft_demand_write ) + sh_unsync(v, gmfn, va); +#endif /* OOS */ + /* Calculate the shadow entry and write it */ l1e_propagate_from_guest(v, gw.l1e, gmfn, &sl1e, ft, p2mt); r = shadow_set_l1e(v, ptr_sl1e, sl1e, sl1mfn); -- 2.30.2