Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [XEN][SHADOW] Fix early-unshadow logic.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEN][SHADOW] Fix early-unshadow logic.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 28 Feb 2007 12:20:31 -0800
Delivery-date: Wed, 28 Feb 2007 12:21:59 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User George Dunlap <gdunlap@xxxxxxxxxxxxx>
# Date 1172679082 18000
# Node ID 7b35a9682d81319553353f767b35d9c98c12ae19
# Parent  d39dcdb9cca36d27d0c509640a15c03800bf706e
[XEN][SHADOW] Fix early-unshadow logic.

Make sure to reset the early-unshadow logic when we
do a fast-path propagate or when we emulate a non-zero
write.

Signed-off-by: George Dunlap <gdunlap@xxxxxxxxxxxxx>
---
 xen/arch/x86/mm/shadow/multi.c |    7 +++++++
 1 files changed, 7 insertions(+)

diff -r d39dcdb9cca3 -r 7b35a9682d81 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c    Wed Feb 28 14:44:52 2007 +0000
+++ b/xen/arch/x86/mm/shadow/multi.c    Wed Feb 28 11:11:22 2007 -0500
@@ -2667,6 +2667,7 @@ static int sh_page_fault(struct vcpu *v,
                      * a not-present fault (by flipping two bits). */
                     ASSERT(regs->error_code & PFEC_page_present);
                     regs->error_code ^= (PFEC_reserved_bit|PFEC_page_present);
+                    reset_early_unshadow(v);
                     perfc_incrc(shadow_fault_fast_gnp);
                     SHADOW_PRINTK("fast path not-present\n");
                     return 0;
@@ -3961,6 +3962,8 @@ sh_x86_emulate_write(struct vcpu *v, uns
     /* If we are writing zeros to this page, might want to unshadow */
     if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) )
         check_for_early_unshadow(v, mfn);
+    else
+        reset_early_unshadow(v);
     
     sh_mark_dirty(v->domain, mfn);
 
@@ -4015,6 +4018,8 @@ sh_x86_emulate_cmpxchg(struct vcpu *v, u
     /* If we are writing zeros to this page, might want to unshadow */
     if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) )
         check_for_early_unshadow(v, mfn);
+    else
+        reset_early_unshadow(v);
 
     sh_mark_dirty(v->domain, mfn);
 
@@ -4057,6 +4062,8 @@ sh_x86_emulate_cmpxchg8b(struct vcpu *v,
     /* If we are writing zeros to this page, might want to unshadow */
     if ( *(u32 *)addr == 0 )
         check_for_early_unshadow(v, mfn);
+    else
+        reset_early_unshadow(v);
 
     sh_mark_dirty(v->domain, mfn);
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEN][SHADOW] Fix early-unshadow logic., Xen patchbot-unstable <=