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

[Xen-devel] [PATCH 4/5] dump-core take 2: hvm builder: tell memory map



# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Date 1168929749 -32400
# Node ID dae81535b77157d2bc3c3547088f0ef512c3b5d2
# Parent  9d5b9b6ff32744c912c44cfb9944646224923628
x86 hvm domain builder: tell xen memory map for dump-core to know
the area to dump.
PATCHNAME: x86_hvm_domain_builder_tell_memory_map

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>

diff -r 9d5b9b6ff327 -r dae81535b771 tools/libxc/xc_hvm_build.c
--- a/tools/libxc/xc_hvm_build.c        Thu Jan 18 11:49:44 2007 +0900
+++ b/tools/libxc/xc_hvm_build.c        Tue Jan 16 15:42:29 2007 +0900
@@ -66,12 +66,14 @@ int xc_get_hvm_param(
     return rc;
 }
 
-static void build_e820map(void *e820_page, unsigned long long mem_size)
+static int build_e820map(int xc_handle, uint32_t domid,
+                         void *e820_page, unsigned long long mem_size)
 {
     struct e820entry *e820entry =
         (struct e820entry *)(((unsigned char *)e820_page) + E820_MAP_OFFSET);
     unsigned long long extra_mem_size = 0;
     unsigned char nr_map = 0;
+    struct e820entry *tmp;
 
     /*
      * Physical address space from HVM_BELOW_4G_RAM_END to 4G is reserved
@@ -142,6 +144,17 @@ static void build_e820map(void *e820_pag
     }
 
     *(((unsigned char *)e820_page) + E820_MAP_NR_OFFSET) = nr_map;
+
+    tmp = malloc(nr_map * sizeof(struct e820entry));
+    if ( tmp == NULL )
+    {
+        PERROR("Could not allocate memory.\n");
+        return -1;
+    }
+    memcpy(tmp, &e820entry[0], nr_map * sizeof(e820entry[0]));
+    xc_domain_set_memmap(xc_handle, domid, tmp, nr_map);
+    free(tmp);
+    return 0;
 }
 
 static int setup_guest(int xc_handle,
@@ -219,8 +232,10 @@ static int setup_guest(int xc_handle,
               E820_MAP_PAGE >> PAGE_SHIFT)) == NULL )
         goto error_out;
     memset(e820_page, 0, PAGE_SIZE);
-    build_e820map(e820_page, v_end);
+    rc = build_e820map(xc_handle, dom, e820_page, v_end);
     munmap(e820_page, PAGE_SIZE);
+    if ( rc != 0 )
+        goto error_out;
 
     /* Map and initialise shared_info page. */
     xatp.domid = dom;
--
yamahata

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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