WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] shadow dirty-VRAM: avoid multiple remove_

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] shadow dirty-VRAM: avoid multiple remove_all_mappings calls.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 26 Oct 2009 06:40:13 -0700
Delivery-date: Mon, 26 Oct 2009 06:40:15 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1256559530 0
# Node ID 19d6d811bc152c954fa85a9a9004a0702cfc5055
# Parent  8ca4e32583b6ebaf7208df1bfd9dbc21b917e9a2
shadow dirty-VRAM: avoid multiple remove_all_mappings calls.

sh_remove_all_mappings() will walk roughly half of the shadow L1
tables for each MFN it's called with; calling it for every MFN in a
guest's framebuffer can be _very_ expensive, especially with the
shadow lock held across the whole operation.  Avoid that by just
blowing away all the shadows.

Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
---
 xen/arch/x86/mm/shadow/common.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

diff -r 8ca4e32583b6 -r 19d6d811bc15 xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c   Fri Oct 23 10:15:17 2009 +0100
+++ b/xen/arch/x86/mm/shadow/common.c   Mon Oct 26 12:18:50 2009 +0000
@@ -3637,12 +3637,9 @@ int shadow_track_dirty_vram(struct domai
      * no need to be careful. */
     if ( !dirty_vram )
     {
-        /* Just recount from start. */
-        for ( i = begin_pfn; i < end_pfn; i++ ) {
-            mfn_t mfn = gfn_to_mfn(d, i, &t);
-            if (mfn_x(mfn) != INVALID_MFN)
-                flush_tlb |= sh_remove_all_mappings(d->vcpu[0], mfn);
-        }
+        /* Throw away all the shadows rather than walking through them 
+         * up to nr times getting rid of mappings of each pfn */
+        shadow_blow_tables(d);
 
         gdprintk(XENLOG_INFO, "tracking VRAM %lx - %lx\n", begin_pfn, end_pfn);
 

_______________________________________________
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] shadow dirty-VRAM: avoid multiple remove_all_mappings calls., Xen patchbot-unstable <=