# HG changeset patch
# User smh22@xxxxxxxxxxxxxxxxxxxx
# Node ID 92469b92f76889dceadf51733214c0d8afa88fc9
# Parent 689315a7ff80f25d9176f2907cc50d1dbec4cdcd
Avoid audit code during live migrate on 32bit since it's not required.
Signed-off-by: Steven Hand <steven@xxxxxxxxxxxxx>
diff -r 689315a7ff80 -r 92469b92f768 xen/arch/x86/shadow32.c
--- a/xen/arch/x86/shadow32.c Tue Nov 29 14:54:44 2005
+++ b/xen/arch/x86/shadow32.c Tue Nov 29 14:57:42 2005
@@ -1027,36 +1027,40 @@
//
free_shadow_pages(d);
- /*
- * Tear down its counts by disassembling its page-table-based ref counts.
- * Also remove CR3's gcount/tcount.
- * That leaves things like GDTs and LDTs and external refs in tact.
- *
- * Most pages will be writable tcount=0.
- * Some will still be L1 tcount=0 or L2 tcount=0.
- * Maybe some pages will be type none tcount=0.
- * Pages granted external writable refs (via grant tables?) will
- * still have a non-zero tcount. That's OK.
- *
- * gcounts will generally be 1 for PGC_allocated.
- * GDTs and LDTs will have additional gcounts.
- * Any grant-table based refs will still be in the gcount.
- *
- * We attempt to grab writable refs to each page (thus setting its type).
- * Immediately put back those type refs.
- *
- * Assert that no pages are left with L1/L2/L3/L4 type.
- */
- audit_adjust_pgtables(d, -1, 1);
-
d->arch.shadow_mode = mode;
if ( shadow_mode_refcounts(d) )
{
- struct list_head *list_ent = d->page_list.next;
- while ( list_ent != &d->page_list )
- {
- struct pfn_info *page = list_entry(list_ent, struct pfn_info,
list);
+ struct list_head *list_ent;
+
+ /*
+ * Tear down its counts by disassembling its page-table-based refcounts
+ * Also remove CR3's gcount/tcount.
+ * That leaves things like GDTs and LDTs and external refs in tact.
+ *
+ * Most pages will be writable tcount=0.
+ * Some will still be L1 tcount=0 or L2 tcount=0.
+ * Maybe some pages will be type none tcount=0.
+ * Pages granted external writable refs (via grant tables?) will
+ * still have a non-zero tcount. That's OK.
+ *
+ * gcounts will generally be 1 for PGC_allocated.
+ * GDTs and LDTs will have additional gcounts.
+ * Any grant-table based refs will still be in the gcount.
+ *
+ * We attempt to grab writable refs to each page thus setting its type
+ * Immediately put back those type refs.
+ *
+ * Assert that no pages are left with L1/L2/L3/L4 type.
+ */
+ audit_adjust_pgtables(d, -1, 1);
+
+
+ for (list_ent = d->page_list.next; list_ent != &d->page_list;
+ list_ent = page->list.next) {
+
+ struct pfn_info *page = list_entry(list_ent,
+ struct pfn_info, list);
if ( !get_page_type(page, PGT_writable_page) )
BUG();
put_page_type(page);
@@ -1064,13 +1068,13 @@
* We use tlbflush_timestamp as back pointer to smfn, and need to
* clean up it.
*/
- if ( shadow_mode_external(d) )
+ if (shadow_mode_external(d))
page->tlbflush_timestamp = 0;
- list_ent = page->list.next;
- }
- }
-
- audit_adjust_pgtables(d, 1, 1);
+ }
+
+ audit_adjust_pgtables(d, 1, 1);
+
+ }
return 0;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|