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

[Xen-changelog] Clean up shadow code presence in common source files.



ChangeSet 1.1275, 2005/04/05 17:55:50+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Clean up shadow code presence in common source files.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 b/xen/common/dom0_ops.c        |    1 
 b/xen/common/dom_mem_ops.c     |   23 +-------------------
 b/xen/common/domain.c          |    1 
 b/xen/common/grant_table.c     |    4 +--
 b/xen/common/page_alloc.c      |   19 +---------------
 b/xen/include/asm-x86/shadow.h |   46 +++++++++++++++++++++++++++++++++++++++++
 b/xen/include/xen/perfc.h      |    2 +
 b/xen/include/xen/shadow.h     |   18 ++++++++++++++++
 xen/include/asm-ia64/shadow.h  |    3 --
 9 files changed, 72 insertions(+), 45 deletions(-)


diff -Nru a/xen/common/dom0_ops.c b/xen/common/dom0_ops.c
--- a/xen/common/dom0_ops.c     2005-04-05 13:03:12 -04:00
+++ b/xen/common/dom0_ops.c     2005-04-05 13:03:12 -04:00
@@ -17,7 +17,6 @@
 #include <xen/trace.h>
 #include <xen/console.h>
 #include <xen/physdev.h>
-#include <asm/shadow.h>
 #include <public/sched_ctl.h>
 
 #define TRC_DOM0OP_ENTER_BASE  0x00020000
diff -Nru a/xen/common/dom_mem_ops.c b/xen/common/dom_mem_ops.c
--- a/xen/common/dom_mem_ops.c  2005-04-05 13:03:13 -04:00
+++ b/xen/common/dom_mem_ops.c  2005-04-05 13:03:13 -04:00
@@ -13,8 +13,8 @@
 #include <xen/perfc.h>
 #include <xen/sched.h>
 #include <xen/event.h>
+#include <xen/shadow.h>
 #include <asm/domain_page.h>
-#include <asm/shadow.h>
 
 /*
  * To allow safe resume of do_dom_mem_op() after preemption, we need to know 
@@ -112,26 +112,7 @@
             if ( test_and_clear_bit(_PGC_allocated, &page->count_info) )
                 put_page(page);
 
-            if ( unlikely(shadow_mode_enabled(d)) )
-            {
-                // XXX This needs more thought.  This isn't pretty,
-                // and it's not fast.  But it's a place holder.
-                //
-                shadow_lock(d);
-                if ( page_out_of_sync(page) )
-                    __shadow_sync_mfn(d, mpfn + j);
-                shadow_remove_all_access(d, mpfn + j);
-
-                if (page->count_info != 1)
-                {
-                    printk("free_dom_mem in shadow mode didn't release page "
-                           "mfn=%p c=%p\n", mpfn+j, page->count_info);
-                    shadow_unlock(d);
-                    audit_domain(d);
-                    BUG();
-                }
-                shadow_unlock(d);
-            }
+            shadow_sync_and_drop_references(d, page);
 
             put_page(page);
         }
diff -Nru a/xen/common/domain.c b/xen/common/domain.c
--- a/xen/common/domain.c       2005-04-05 13:03:12 -04:00
+++ b/xen/common/domain.c       2005-04-05 13:03:13 -04:00
@@ -15,7 +15,6 @@
 #include <xen/time.h>
 #include <xen/console.h>
 #include <xen/softirq.h>
-#include <asm/shadow.h>
 #include <public/dom0_ops.h>
 #include <asm/domain_page.h>
 #include <asm/debugger.h>
diff -Nru a/xen/common/grant_table.c b/xen/common/grant_table.c
--- a/xen/common/grant_table.c  2005-04-05 13:03:13 -04:00
+++ b/xen/common/grant_table.c  2005-04-05 13:03:13 -04:00
@@ -27,8 +27,8 @@
 
 #include <xen/config.h>
 #include <xen/sched.h>
-#include <asm/mm.h>
-#include <asm/shadow.h>
+#include <xen/shadow.h>
+#include <xen/mm.h>
 
 #define PIN_FAIL(_lbl, _rc, _f, _a...)   \
     do {                           \
diff -Nru a/xen/common/page_alloc.c b/xen/common/page_alloc.c
--- a/xen/common/page_alloc.c   2005-04-05 13:03:12 -04:00
+++ b/xen/common/page_alloc.c   2005-04-05 13:03:12 -04:00
@@ -30,9 +30,9 @@
 #include <xen/slab.h>
 #include <xen/irq.h>
 #include <xen/softirq.h>
+#include <xen/shadow.h>
 #include <asm/domain_page.h>
 #include <asm/page.h>
-#include <asm/shadow.h>
 
 /*
  * Comma-separated list of hexadecimal page numbers containing bad bytes.
@@ -561,22 +561,7 @@
 
         for ( i = 0; i < (1 << order); i++ )
         {
-            if ( ((pg[i].u.inuse.type_info & PGT_count_mask) != 0) &&
-                shadow_mode_enabled(d) )
-            {
-                // XXX This needs more thought...
-                //
-                printk("%s: needing to call shadow_remove_all_access for 
mfn=%p\n",
-                       __func__, page_to_pfn(&pg[i]));
-                printk("Amfn=%p c=%p t=%p\n", page_to_pfn(&pg[i]),
-                       pg[i].count_info, pg[i].u.inuse.type_info);
-                shadow_lock(d);
-                shadow_remove_all_access(d, page_to_pfn(&pg[i]));
-                shadow_unlock(d);
-                printk("Bmfn=%p c=%p t=%p\n", page_to_pfn(&pg[i]),
-                       pg[i].count_info, pg[i].u.inuse.type_info);
-            }
-
+            shadow_drop_references(d, &pg[i]);
             ASSERT((pg[i].u.inuse.type_info & PGT_count_mask) == 0);
             pg[i].tlbflush_timestamp  = tlbflush_current_time();
             pg[i].u.free.cpu_mask     = d->cpuset;
diff -Nru a/xen/include/asm-ia64/shadow.h b/xen/include/asm-ia64/shadow.h
--- a/xen/include/asm-ia64/shadow.h     2005-04-05 13:03:12 -04:00
+++ /dev/null   Wed Dec 31 16:00:00 196900
@@ -1,3 +0,0 @@
-
-#define        shadow_lock_init(d)     do {} while(0)
-#define        shadow_mode_init(d)     do {} while(0)
diff -Nru a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h
--- a/xen/include/asm-x86/shadow.h      2005-04-05 13:03:12 -04:00
+++ b/xen/include/asm-x86/shadow.h      2005-04-05 13:03:12 -04:00
@@ -377,6 +377,52 @@
     }
 }
 
+static inline void shadow_drop_references(
+    struct domain *d, struct pfn_info *page)
+{
+    if ( likely(!shadow_mode_enabled(d)) ||
+         ((page->u.inuse.type_info & PGT_count_mask) == 0) )
+        return;
+
+    /* XXX This needs more thought... */
+    printk("%s: needing to call shadow_remove_all_access for mfn=%p\n",
+           __func__, page_to_pfn(page));
+    printk("Before: mfn=%p c=%p t=%p\n", page_to_pfn(page),
+           page->count_info, page->u.inuse.type_info);
+
+    shadow_lock(d);
+    shadow_remove_all_access(d, page_to_pfn(page));
+    shadow_unlock(d);
+
+    printk("After:  mfn=%p c=%p t=%p\n", page_to_pfn(page),
+           page->count_info, page->u.inuse.type_info);
+}
+
+static inline void shadow_sync_and_drop_references(
+    struct domain *d, struct pfn_info *page)
+{
+    if ( likely(!shadow_mode_enabled(d)) )
+        return;
+
+    /* XXX Needs more thought. Neither pretty nor fast: a place holder. */
+    shadow_lock(d);
+
+    if ( page_out_of_sync(page) )
+        __shadow_sync_mfn(d, page_to_pfn(page));
+
+    shadow_remove_all_access(d, page_to_pfn(page));
+
+    if ( page->count_info != 1 )
+    {
+        printk("free_dom_mem in shadow mode didn't release page "
+               "mfn=%p c=%p\n", page_to_pfn(page), page->count_info);
+        shadow_unlock(d);
+        audit_domain(d);
+        BUG();
+    }
+
+    shadow_unlock(d);
+}
 
 /************************************************************************/
 
diff -Nru a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
--- a/xen/include/xen/perfc.h   2005-04-05 13:03:13 -04:00
+++ b/xen/include/xen/perfc.h   2005-04-05 13:03:13 -04:00
@@ -111,7 +111,9 @@
 #define perfc_incr(x)     ((void)0)
 #define perfc_decr(x)     ((void)0)
 #define perfc_incrc(x)    ((void)0)
+#define perfc_decrc(x)    ((void)0)
 #define perfc_incra(x,y)  ((void)0)
+#define perfc_decra(x,y)  ((void)0)
 #define perfc_add(x,y)    ((void)0)
 #define perfc_addc(x,y)   ((void)0)
 #define perfc_adda(x,y,z) ((void)0)
diff -Nru a/xen/include/xen/shadow.h b/xen/include/xen/shadow.h
--- /dev/null   Wed Dec 31 16:00:00 196900
+++ b/xen/include/xen/shadow.h  2005-04-05 13:03:13 -04:00
@@ -0,0 +1,18 @@
+
+#ifndef __XEN_SHADOW_H__
+#define __XEN_SHADOW_H__
+
+#include <xen/config.h>
+
+#ifdef CONFIG_X86
+
+#include <asm/shadow.h>
+
+#else
+
+#define shadow_drop_references(_d, _p)          ((void)0)
+#define shadow_sync_and_drop_references(_d, _p) ((void)0)
+
+#endif
+
+#endif /* __XEN_SHADOW_H__ */

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