diff -r e75bba7f3ff3 xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Fri Sep 11 10:19:58 2009 +0100 +++ b/xen/arch/x86/mm/p2m.c Fri Sep 11 10:22:05 2009 +0100 @@ -709,7 +709,7 @@ * + All gfns are ram types * + All gfns have the same type * + All of the mfns are allocated to a domain - * + None of the mfns are used as pagetables + * + None of the mfns are used as pagetables, or allocated via xenheap * + The first mfn is 2-meg aligned * + All the other mfns are in sequence * Adding for good measure: @@ -719,7 +719,8 @@ if ( !p2m_is_ram(type) || type != type0 || ( (mfn_to_page(mfn)->count_info & PGC_allocated) == 0 ) - || ( (mfn_to_page(mfn)->count_info & PGC_page_table) != 0 ) + || ( (mfn_to_page(mfn)->count_info & (PGC_page_table|PGC_xen_heap)) != 0 ) + || ( (mfn_to_page(mfn)->count_info & PGC_xen_heap ) != 0 ) || ( (mfn_to_page(mfn)->count_info & PGC_count_mask) > max_ref ) || !( ( i == 0 && superpage_aligned(mfn_x(mfn0)) ) || ( i != 0 && mfn_x(mfn) == (mfn_x(mfn0) + i) ) ) ) @@ -810,11 +811,11 @@ for ( i=0; icount_info & PGC_allocated) != 0 ) - && ( (mfn_to_page(mfns[i])->count_info & PGC_page_table) == 0 ) + && ( (mfn_to_page(mfns[i])->count_info & (PGC_page_table|PGC_xen_heap)) == 0 ) && ( (mfn_to_page(mfns[i])->count_info & PGC_count_mask) <= max_ref ) ) map[i] = map_domain_page(mfn_x(mfns[i])); else