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

[Xen-changelog] [xen-unstable] Further shrink the big-lock window.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1175007810 -3600
# Node ID f1014cbe906a80d01a9321604a3bb32db7f5aec5
# Parent  070cf119a7ec6b62161022502cf8ec7563ebfd76
Further shrink the big-lock window.

A few more adjustments to when the 'big' lock is taken/dropped.

Also, fix a case where the foreign domain setting may not get properly
cleared at the end of a hypercall (in case of an early error).

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/mm.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff -r 070cf119a7ec -r f1014cbe906a xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Tue Mar 27 15:53:45 2007 +0100
+++ b/xen/arch/x86/mm.c Tue Mar 27 16:03:30 2007 +0100
@@ -2431,12 +2431,12 @@ int do_mmu_update(
         guest_handle_add_offset(ureqs, 1);
     }
 
+    process_deferred_ops();
+
+    UNLOCK_BIGLOCK(d);
+
     domain_mmap_cache_destroy(&mapcache);
     domain_mmap_cache_destroy(&sh_mapcache);
-
-    process_deferred_ops();
-
-    UNLOCK_BIGLOCK(d);
 
  out:
     /* Add incremental work we have done to the @done output parameter. */
@@ -2740,6 +2740,10 @@ int do_update_va_mapping(unsigned long v
         guest_unmap_l1e(v, pl1e);
     pl1e = NULL;
 
+    process_deferred_ops();
+
+    UNLOCK_BIGLOCK(d);
+
     switch ( flags & UVMF_FLUSHTYPE_MASK )
     {
     case UVMF_TLB_FLUSH:
@@ -2785,10 +2789,6 @@ int do_update_va_mapping(unsigned long v
         break;
     }
 
-    process_deferred_ops();
-    
-    UNLOCK_BIGLOCK(d);
-
     return rc;
 }
 
@@ -2805,6 +2805,9 @@ int do_update_va_mapping_otherdomain(uns
         return -ESRCH;
 
     rc = do_update_va_mapping(va, val64, flags);
+
+    BUG_ON(this_cpu(percpu_mm_info).deferred_ops);
+    process_deferred_ops(); /* only to clear foreigndom */
 
     return rc;
 }

_______________________________________________
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®.