Avoid audit code during live migrate on 32bit since it's not required.

Signed-off-by: Steven Hand <steven@xensource.com>
This commit is contained in:
smh22@firebug.cl.cam.ac.uk committed 2005-11-29 15:57:42 +01:00
1 parent 98a54f8733
commit 79d1eef3ba
1 file changed
+34 -30
+34 -30
View File
@@ -1027,36 +1027,40 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode)
//
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,14 +1068,14 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode)
* 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;
nomem:
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.