SHA256
1
0
forked from pool/xen
xen/18929-shadow-no-duplicates.patch

30 lines
1.0 KiB
Diff

# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1229599705 0
# Node ID c2dad16819b54c2c4b2bb0e9e89f71c279eaf156
# Parent b33b745cd5ec3213feeb1d99e421e79cc5f12370
x86, shadow: Avoid duplicates in fixup tables.
Avoid entering duplicates in fixup tables, reducing fixup evictions.
Signed-off-by: Gianluca Guida <gianluca.guida@eu.citrix.com>
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -626,6 +626,15 @@ void oos_fixup_add(struct vcpu *v, mfn_t
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 )