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

[Xen-changelog] Some small header-include cleanups. No need for BIGLOCK in dom_mem_op



ChangeSet 1.1346, 2005/03/17 14:08:58+00:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Some small header-include cleanups. No need for BIGLOCK in dom_mem_op
        hypercall.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 arch/x86/smp.c         |    6 ++----
 arch/x86/x86_emulate.c |    1 +
 common/dom_mem_ops.c   |    4 ----
 common/elf.c           |    1 +
 common/page_alloc.c    |    3 ++-
 common/xmalloc.c       |    2 ++
 include/asm-x86/mm.h   |   36 +++++++++---------------------------
 include/xen/sched.h    |   12 +-----------
 8 files changed, 18 insertions(+), 47 deletions(-)


diff -Nru a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
--- a/xen/arch/x86/smp.c        2005-03-17 10:01:34 -05:00
+++ b/xen/arch/x86/smp.c        2005-03-17 10:01:34 -05:00
@@ -8,9 +8,11 @@
  *     later.
  */
 
+#include <xen/config.h>
 #include <xen/irq.h>
 #include <xen/sched.h>
 #include <xen/delay.h>
+#include <xen/perfc.h>
 #include <xen/spinlock.h>
 #include <asm/smp.h>
 #include <asm/mc146818rtc.h>
@@ -18,8 +20,6 @@
 #include <asm/smpboot.h>
 #include <asm/hardirq.h>
 
-#ifdef CONFIG_SMP
-
 /*
  *     Some notes on x86 processor bugs affecting SMP operation:
  *
@@ -420,5 +420,3 @@
         atomic_inc(&call_data->finished);
     }
 }
-
-#endif /* CONFIG_SMP */
diff -Nru a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c
--- a/xen/arch/x86/x86_emulate.c        2005-03-17 10:01:34 -05:00
+++ b/xen/arch/x86/x86_emulate.c        2005-03-17 10:01:34 -05:00
@@ -22,6 +22,7 @@
 #include <xen/config.h>
 #include <xen/types.h>
 #include <xen/lib.h>
+#include <xen/mm.h>
 #include <asm/regs.h>
 #endif
 #include <asm-x86/x86_emulate.h>
diff -Nru a/xen/common/dom_mem_ops.c b/xen/common/dom_mem_ops.c
--- a/xen/common/dom_mem_ops.c  2005-03-17 10:01:34 -05:00
+++ b/xen/common/dom_mem_ops.c  2005-03-17 10:01:34 -05:00
@@ -142,8 +142,6 @@
     else if ( unlikely((d = find_domain_by_id(domid)) == NULL) )
         return -ESRCH;
 
-    LOCK_BIGLOCK(d);
-
     switch ( op )
     {
     case MEMOP_increase_reservation:
@@ -161,8 +159,6 @@
 
     if ( unlikely(domid != DOMID_SELF) )
         put_domain(d);
-
-    UNLOCK_BIGLOCK(d);
 
     return rc;
 }
diff -Nru a/xen/common/elf.c b/xen/common/elf.c
--- a/xen/common/elf.c  2005-03-17 10:01:34 -05:00
+++ b/xen/common/elf.c  2005-03-17 10:01:34 -05:00
@@ -9,6 +9,7 @@
 #include <xen/lib.h>
 #include <xen/mm.h>
 #include <xen/elf.h>
+#include <xen/sched.h>
 
 #ifdef CONFIG_X86
 #define FORCE_XENELF_IMAGE 1
diff -Nru a/xen/common/page_alloc.c b/xen/common/page_alloc.c
--- a/xen/common/page_alloc.c   2005-03-17 10:01:34 -05:00
+++ b/xen/common/page_alloc.c   2005-03-17 10:01:34 -05:00
@@ -24,11 +24,12 @@
 #include <xen/init.h>
 #include <xen/types.h>
 #include <xen/lib.h>
-#include <asm/page.h>
+#include <xen/perfc.h>
 #include <xen/spinlock.h>
 #include <xen/slab.h>
 #include <xen/irq.h>
 #include <asm/domain_page.h>
+#include <asm/page.h>
 
 /*
  * Comma-separated list of hexadecimal page numbers containing bad bytes.
diff -Nru a/xen/common/xmalloc.c b/xen/common/xmalloc.c
--- a/xen/common/xmalloc.c      2005-03-17 10:01:34 -05:00
+++ b/xen/common/xmalloc.c      2005-03-17 10:01:34 -05:00
@@ -27,10 +27,12 @@
  *     (Disadvantage is potentially greater internal fragmentation).
  */
 
+#include <xen/config.h>
 #include <xen/mm.h>
 #include <xen/spinlock.h>
 #include <xen/ac_timer.h>
 #include <xen/cache.h>
+#include <xen/prefetch.h>
 
 static LIST_HEAD(freelist);
 static spinlock_t freelist_lock = SPIN_LOCK_UNLOCKED;
diff -Nru a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
--- a/xen/include/asm-x86/mm.h  2005-03-17 10:01:34 -05:00
+++ b/xen/include/asm-x86/mm.h  2005-03-17 10:01:34 -05:00
@@ -4,18 +4,7 @@
 
 #include <xen/config.h>
 #include <xen/list.h>
-#include <xen/spinlock.h>
-#include <xen/perfc.h>
-#include <xen/sched.h>
-
-#include <asm/processor.h>
-#include <asm/atomic.h>
-#include <asm/desc.h>
-#include <asm/flushtlb.h>
 #include <asm/io.h>
-#include <asm/uaccess.h>
-
-#include <public/xen.h>
 
 /*
  * Per-page-frame information.
@@ -241,19 +230,11 @@
  */
 #define __phys_to_machine_mapping ((unsigned long *)RO_MPT_VIRT_START)
 
-/* Returns the machine physical */
-static inline unsigned long phys_to_machine_mapping(unsigned long pfn) 
-{
-    unsigned long mfn;
-    l1_pgentry_t pte;
-
-   if (__get_user(l1_pgentry_val(pte), (__phys_to_machine_mapping + pfn)))
-       mfn = 0;
-   else
-       mfn = l1_pgentry_to_phys(pte) >> PAGE_SHIFT;
-
-   return mfn; 
-}
+#define phys_to_machine_mapping(_pfn)                                      \
+({ l1_pgentry_t l1e; unsigned long mfn;                                    \
+   mfn = __get_user(l1_pgentry_val(l1e), &__phys_to_machine_mapping[_pfn]) \
+       ? 0 : l1_pgentry_to_pfn(l1e);                                       \
+   mfn; })
 #define set_machinetophys(_mfn, _pfn) machine_to_phys_mapping[(_mfn)] = (_pfn)
 
 #define DEFAULT_GDT_ENTRIES     (LAST_RESERVED_GDT_ENTRY+1)
@@ -339,9 +320,10 @@
 
 void propagate_page_fault(unsigned long addr, u16 error_code);
 
-/* update_grant_va_mapping
- * Caller must own d's BIGLOCK, is responsible for flushing the TLB,
- * and have already get_page'd */
+/*
+ * Caller must own d's BIGLOCK, is responsible for flushing the TLB, and must 
+ * hold a reference to the page.
+ */
 int update_grant_va_mapping(unsigned long va,
                             unsigned long val,
                             struct domain *d,
diff -Nru a/xen/include/xen/sched.h b/xen/include/xen/sched.h
--- a/xen/include/xen/sched.h   2005-03-17 10:01:34 -05:00
+++ b/xen/include/xen/sched.h   2005-03-17 10:01:34 -05:00
@@ -89,19 +89,9 @@
     struct arch_exec_domain arch;
 };
 
-/*
-** SMH: do_mmu_update() grabs big_lock and subsequently can fault 
-** on map_ldt_shadow_page(), enter do_page_fault() and then deadlock 
-** trying to reacquire big_lock. A temporary fix is to make big_lock
-** recursive; overall probably needs more thought. 
-*/
-#if 0
-#define LOCK_BIGLOCK(_d) spin_lock(&(_d)->big_lock)
-#define UNLOCK_BIGLOCK(_d) spin_unlock(&(_d)->big_lock)
-#else
+/* Per-domain lock can be recursively acquired in fault handlers. */
 #define LOCK_BIGLOCK(_d) spin_lock_recursive(&(_d)->big_lock)
 #define UNLOCK_BIGLOCK(_d) spin_unlock_recursive(&(_d)->big_lock)
-#endif
 
 struct domain
 {


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-changelog


 


Rackspace

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