diff options
author | Tim Deegan <Tim.Deegan@xensource.com> | 2006-12-20 11:53:01 +0000 |
---|---|---|
committer | Tim Deegan <Tim.Deegan@xensource.com> | 2006-12-20 11:53:01 +0000 |
commit | 2716d15280677f9c507568381a30c1d6f82eae43 (patch) | |
tree | a8d4667fe7b7f90a103bb1cbb9e553456340bd0b /xen/include/asm-x86/shadow.h | |
parent | 27ea071e57c755308015fe8440f12c731497e23e (diff) | |
download | xen-2716d15280677f9c507568381a30c1d6f82eae43.tar.gz xen-2716d15280677f9c507568381a30c1d6f82eae43.tar.bz2 xen-2716d15280677f9c507568381a30c1d6f82eae43.zip |
[XEN] Better diagnostics of recursive shadow faults
Give a trace of the recursive fault instead of BUG()ing in the shadow handler.
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.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h index f923f662de..94591e6dad 100644 --- a/xen/include/asm-x86/shadow.h +++ b/xen/include/asm-x86/shadow.h @@ -105,7 +105,7 @@ (_d)->arch.shadow.locker_function = "nobody"; \ } while (0) -#define shadow_lock_is_acquired(_d) \ +#define shadow_locked_by_me(_d) \ (current->processor == (_d)->arch.shadow.locker) #define shadow_lock(_d) \ @@ -337,7 +337,7 @@ static inline void mark_dirty(struct domain *d, unsigned long gmfn) /* Internal version, for when the shadow lock is already held */ static inline void sh_mark_dirty(struct domain *d, mfn_t gmfn) { - ASSERT(shadow_lock_is_acquired(d)); + ASSERT(shadow_locked_by_me(d)); if ( unlikely(shadow_mode_log_dirty(d)) ) sh_do_mark_dirty(d, gmfn); } @@ -552,7 +552,7 @@ shadow_remove_all_shadows_and_parents(struct vcpu *v, mfn_t gmfn); extern void sh_remove_shadows(struct vcpu *v, mfn_t gmfn, int fast, int all); static inline void shadow_remove_all_shadows(struct vcpu *v, mfn_t gmfn) { - int was_locked = shadow_lock_is_acquired(v->domain); + int was_locked = shadow_locked_by_me(v->domain); if ( !was_locked ) shadow_lock(v->domain); sh_remove_shadows(v, gmfn, 0, 1); |