[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] PoD: Don't reclaim xenheap pages in zero-sweep
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1254409742 -3600 # Node ID d4a0b5f420beb9d70a12dc4a7e132c40f992a777 # Parent 2519769ba3be0a647c3fcd87c3cd632ce5c4a60f PoD: Don't reclaim xenheap pages in zero-sweep Don't reclaim xenheap-allocated pages in the zero-sweep. This avoids grabbing things like grant tables mapped in the p2m. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> xen-unstable changeset: 20192:a06db28876fe xen-unstable date: Tue Sep 15 09:09:18 2009 +0100 --- xen/arch/x86/mm/p2m.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff -r 2519769ba3be -r d4a0b5f420be xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Thu Oct 01 16:08:30 2009 +0100 +++ b/xen/arch/x86/mm/p2m.c Thu Oct 01 16:09:02 2009 +0100 @@ -750,7 +750,7 @@ p2m_pod_zero_check_superpage(struct doma * + 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: @@ -760,7 +760,8 @@ p2m_pod_zero_check_superpage(struct doma 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) ) ) ) @@ -851,11 +852,11 @@ p2m_pod_zero_check(struct domain *d, uns for ( i=0; i<count; i++ ) { mfns[i] = gfn_to_mfn_query(d, gfns[i], types + i); - /* If this is ram, and not a pagetable, and probably not mapped + /* If this is ram, and not a pagetable or from the xen heap, and probably not mapped elsewhere, map it; otherwise, skip. */ if ( p2m_is_ram(types[i]) && ( (mfn_to_page(mfns[i])->count_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 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |