From: Keir Fraser Date: Fri, 20 Jun 2008 17:41:50 +0000 (+0100) Subject: Out-of-sync L1 shadows: always unsync pages on guest writes. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14192^2~33 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d067e4b0775b296578740a607a82a3940b7f30ac;p=xen.git Out-of-sync L1 shadows: always unsync pages on guest writes. Signed-off-by: Gianluca Guida --- 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);