[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Avoid audit code during live migrate on 32bit since it's not required.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |