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
|