aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/shadow.h
diff options
context:
space:
mode:
authorTim Deegan <tim.deegan@xensource.com>2006-09-28 17:09:11 +0100
committerTim Deegan <tim.deegan@xensource.com>2006-09-28 17:09:11 +0100
commit9a01a03d51ddc5438a7e88b3b701d081b4fd23a1 (patch)
tree2ae6323aa7266b0cd353b4a09706d26f72343ea2 /xen/include/asm-x86/shadow.h
parent78c7edb1d5f00ef2c00992fa6f41305196f51459 (diff)
downloadxen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.tar.gz
xen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.tar.bz2
xen-9a01a03d51ddc5438a7e88b3b701d081b4fd23a1.zip
[XEN] Fix interaction between tlbflush timestamp and shadow flags
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/shadow.h')
-rw-r--r--xen/include/asm-x86/shadow.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h
index 94a4ff11fd..d6c9688de7 100644
--- a/xen/include/asm-x86/shadow.h
+++ b/xen/include/asm-x86/shadow.h
@@ -481,7 +481,12 @@ shadow_remove_all_shadows_and_parents(struct vcpu *v, mfn_t gmfn);
extern void sh_remove_shadows(struct vcpu *v, mfn_t gmfn, int all);
static inline void shadow_remove_all_shadows(struct vcpu *v, mfn_t gmfn)
{
+ int was_locked = shadow_lock_is_acquired(v->domain);
+ if ( !was_locked )
+ shadow_lock(v->domain);
sh_remove_shadows(v, gmfn, 1);
+ if ( !was_locked )
+ shadow_unlock(v->domain);
}
/* Add a page to a domain */