diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-06-21 19:18:27 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-06-21 19:18:27 +0100 |
commit | 3d5e6a3ff38302913fff925660e947b0256166f7 (patch) | |
tree | 3bd8ebf04ec60dd591dc5204636516e65dcff208 /xen/include/asm-x86/paging.h | |
parent | c814a49b0654193f409fa4dd013805b373302d83 (diff) | |
download | xen-3d5e6a3ff38302913fff925660e947b0256166f7.tar.gz xen-3d5e6a3ff38302913fff925660e947b0256166f7.tar.bz2 xen-3d5e6a3ff38302913fff925660e947b0256166f7.zip |
x86 hvm: implement HVMOP_pagetable_dying
This patch implements HVMOP_pagetable_dying: an hypercall for
guests to notify Xen that a pagetable is about to be destroyed so that
Xen can use it as a hint to unshadow the pagetable soon and unhook the
top-level user-mode shadow entries right away.
Gianluca Guida is the original author of this patch.
Signed-off-by: Gianluca Guida <glguida@gmail.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'xen/include/asm-x86/paging.h')
-rw-r--r-- | xen/include/asm-x86/paging.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h index fca130b43a..10aa9f1339 100644 --- a/xen/include/asm-x86/paging.h +++ b/xen/include/asm-x86/paging.h @@ -95,6 +95,7 @@ struct shadow_paging_mode { void (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn); int (*guess_wrmap )(struct vcpu *v, unsigned long vaddr, mfn_t gmfn); + void (*pagetable_dying )(struct vcpu *v, paddr_t gpa); /* For outsiders to tell what mode we're in */ unsigned int shadow_levels; }; @@ -342,6 +343,10 @@ static inline void paging_write_p2m_entry(struct domain *d, unsigned long gfn, safe_write_pte(p, new); } +/* Called from the guest to indicate that the a process is being + * torn down and its pagetables will soon be discarded */ +void pagetable_dying(struct domain *d, paddr_t gpa); + /* Print paging-assistance info to the console */ void paging_dump_domain_info(struct domain *d); void paging_dump_vcpu_info(struct vcpu *v); |