From: Keir Fraser Date: Thu, 18 Dec 2008 11:28:25 +0000 (+0000) Subject: x86, shadow: Avoid duplicates in fixup tables. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14026^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2f0f4ad09f36444696bc0bb3237d819c5a892bc2;p=xen.git x86, shadow: Avoid duplicates in fixup tables. Avoid entering duplicates in fixup tables, reducing fixup evictions. Signed-off-by: Gianluca Guida --- diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index dd391cc675..837ed32f87 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -627,6 +627,15 @@ void oos_fixup_add(struct vcpu *v, mfn_t gmfn, idx = (idx + 1) % SHADOW_OOS_PAGES; if ( mfn_x(oos[idx]) == mfn_x(gmfn) ) { + int i; + for ( i = 0; i < SHADOW_OOS_FIXUPS; i++ ) + { + if ( mfn_valid(oos_fixup[idx].smfn[i]) + && (mfn_x(oos_fixup[idx].smfn[i]) == mfn_x(smfn)) + && (oos_fixup[idx].off[i] == off) ) + return; + } + next = oos_fixup[idx].next; if ( mfn_x(oos_fixup[idx].smfn[next]) != INVALID_MFN )