[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-ia64-devel] [PATCH] change layout of p2m table from xenheap to domheap



Hi,

Current xen can not fully utilize 64GB memory since xenheap is
exhausted by p2m tables.

This patch changes the layout of p2m table from xenheap to domheap. 
The side effect is subtle performance down due to TLB miss.

A new boot option 'p2m_xenheap' enables the previous setting that p2m
table is allocated in xenheap. 
I dare to change the default for the future.

If there are no objections, please apply.

Thanks,
Kouya

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>

diff -r 9fbaf07d3f67 xen/arch/ia64/xen/mm.c
--- a/xen/arch/ia64/xen/mm.c    Thu Mar 08 09:50:25 2007 -0700
+++ b/xen/arch/ia64/xen/mm.c    Mon Mar 12 17:45:56 2007 +0900
@@ -1903,9 +1903,20 @@ void __free_pages(struct page_info *page
        free_xenheap_page(page);
 }
 
+static int opt_p2m_xenheap;
+boolean_param("p2m_xenheap", opt_p2m_xenheap);
+
 void *pgtable_quicklist_alloc(void)
 {
     void *p;
+    if (!opt_p2m_xenheap) {
+        struct page_info *page = alloc_domheap_page(NULL);
+        if (page == NULL)
+            return NULL;
+        p = page_to_virt(page);
+        clear_page(p);
+        return p;
+    }
     p = alloc_xenheap_pages(0);
     if (p)
         clear_page(p);
@@ -1914,7 +1925,10 @@ void *pgtable_quicklist_alloc(void)
 
 void pgtable_quicklist_free(void *pgtable_entry)
 {
-       free_xenheap_page(pgtable_entry);
+    if (!opt_p2m_xenheap)
+        free_domheap_page(virt_to_page(pgtable_entry));
+    else
+        free_xenheap_page(pgtable_entry);
 }
 
 void put_page_type(struct page_info *page)
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.