Hi,
If we don't specify dom0_mem, we can use all memory on dom0 with this patch.
I change alloc_dom0() to alloc_dom0_size(), and alloc_dom0_size() is static
function.
# HG changeset patch
# User root@PQtest
# Node ID 1625e2ba02fcb2c7d162e178a045b7d540a213f1
# Parent a2b2b2a011f1d406d49caba478020f3b2b173cb8
allocate all memory to dom0, if we don't specify dom0_mem.
Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>
diff -r a2b2b2a011f1 -r 1625e2ba02fc xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c Mon Jan 15 15:15:26 2007 -0700
+++ b/xen/arch/ia64/xen/domain.c Thu Jan 18 13:45:00 2007 +0900
@@ -50,7 +50,7 @@
#include <asm/tlb_track.h>
#include <asm/perfmon.h>
-unsigned long dom0_size = 512*1024*1024;
+unsigned long dom0_size = 0;
/* dom0_max_vcpus: maximum number of VCPUs to create for dom0. */
static unsigned int dom0_max_vcpus = 1;
@@ -936,16 +936,24 @@ static void loaddomainelfimage(struct do
}
}
-void alloc_dom0(void)
-{
+static void alloc_dom0_size(void)
+{
+ unsigned long max_dom0_pages;
+
+ if ( dom0_size == 0 )
+ {
+ max_dom0_pages = avail_domheap_pages() -
min(avail_domheap_pages() / 16UL, 512UL << (20 - PAGE_SHIFT)) ;
+ dom0_size = max_dom0_pages * PAGE_SIZE;
+ }
+
+ if (running_on_sim) {
+ dom0_size = 128*1024*1024; //FIXME: Should be configurable
+ }
+
/* Check dom0 size. */
if (dom0_size < 4 * 1024 * 1024) {
panic("dom0_mem is too small, boot aborted"
" (try e.g. dom0_mem=256M or dom0_mem=65536K)\n");
- }
-
- if (running_on_sim) {
- dom0_size = 128*1024*1024; //FIXME: Should be configurable
}
/* no need to allocate pages for now
@@ -1008,6 +1016,8 @@ int construct_dom0(struct domain *d,
memset(&dsi, 0, sizeof(struct domain_setup_info));
printk("*** LOADING DOMAIN 0 ***\n");
+
+ alloc_dom0_size();
max_pages = dom0_size / PAGE_SIZE;
d->max_pages = max_pages;
diff -r a2b2b2a011f1 -r 1625e2ba02fc xen/arch/ia64/xen/xensetup.c
--- a/xen/arch/ia64/xen/xensetup.c Mon Jan 15 15:15:26 2007 -0700
+++ b/xen/arch/ia64/xen/xensetup.c Thu Jan 18 13:45:00 2007 +0900
@@ -43,7 +43,6 @@ extern void early_setup_arch(char **);
extern void early_setup_arch(char **);
extern void late_setup_arch(char **);
extern void hpsim_serial_init(void);
-extern void alloc_dom0(void);
extern void setup_per_cpu_areas(void);
extern void mem_init(void);
extern void init_IRQ(void);
@@ -409,8 +408,6 @@ void start_kernel(void)
trap_init();
- alloc_dom0();
-
end_boot_allocator();
init_xenheap_pages(__pa(xen_heap_start), xenheap_phys_end);
Best Regards,
Akio Takebe
allocate_all_mem.patch
Description: Binary data
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|