[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-3.2-testing] x86: Add TLB flushing to HAP p2m changes



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1224587242 -3600
# Node ID 99a1f08f997d8e3d49364f2b0800180997d0e29b
# Parent  f44c7681c43819ebaf5bb0fd4430517ca6dbc3ec
x86: Add TLB flushing to HAP p2m changes

Removing an MFN from the p2m requires it to be flushed from the
guest's TLBs on HAP, like we do when we're using shadows.

Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
xen-unstable changeset:   18660:f4dab783b58b41f2c67a66d6d095887faec3c296
xen-unstable date:        Mon Oct 20 16:49:25 2008 +0100
---
 xen/arch/x86/mm/hap/hap.c |    7 +++++++
 1 files changed, 7 insertions(+)

diff -r f44c7681c438 -r 99a1f08f997d xen/arch/x86/mm/hap/hap.c
--- a/xen/arch/x86/mm/hap/hap.c Tue Oct 21 12:06:53 2008 +0100
+++ b/xen/arch/x86/mm/hap/hap.c Tue Oct 21 12:07:22 2008 +0100
@@ -680,9 +680,16 @@ hap_write_p2m_entry(struct vcpu *v, unsi
 hap_write_p2m_entry(struct vcpu *v, unsigned long gfn, l1_pgentry_t *p,
                     mfn_t table_mfn, l1_pgentry_t new, unsigned int level)
 {
+    uint32_t old_flags;
+
     hap_lock(v->domain);
 
+    old_flags = l1e_get_flags(*p);
     safe_write_pte(p, new);
+    if ( (old_flags & _PAGE_PRESENT)
+         && (level == 1 || (level == 2 && (old_flags & _PAGE_PSE))) )
+             flush_tlb_mask(v->domain->domain_dirty_cpumask);
+
 #if CONFIG_PAGING_LEVELS == 3
     /* install P2M in monitor table for PAE Xen */
     if ( level == 3 )

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.