summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Williamson2010-06-25 19:08:45 +0200
committerAnthony Liguori2010-07-06 17:36:27 +0200
commit44ae28f3152138e71ccad66c201d730b93374bc2 (patch)
tree9aa6ed6b2dfe8584a77dc22f7d09fc43d425e430
parentRemove uses of ram.last_offset (aka last_ram_offset) (diff)
downloadqemu-44ae28f3152138e71ccad66c201d730b93374bc2.tar.gz
qemu-44ae28f3152138e71ccad66c201d730b93374bc2.tar.xz
qemu-44ae28f3152138e71ccad66c201d730b93374bc2.zip
pc: Allocate all ram in a single qemu_ram_alloc()
This will benefit us when we migrate based on ramblock name since we won't be bouncing between separate blocks. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--hw/pc.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/hw/pc.c b/hw/pc.c
index b577fb1bc6..7b48fbce50 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -901,27 +901,23 @@ void pc_memory_init(ram_addr_t ram_size,
*above_4g_mem_size_p = above_4g_mem_size;
*below_4g_mem_size_p = below_4g_mem_size;
+#if TARGET_PHYS_ADDR_BITS == 32
+ if (above_4g_mem_size > 0) {
+ hw_error("To much RAM for 32-bit physical address");
+ }
+#endif
linux_boot = (kernel_filename != NULL);
/* allocate RAM */
- ram_addr = qemu_ram_alloc(below_4g_mem_size);
+ ram_addr = qemu_ram_alloc(below_4g_mem_size + above_4g_mem_size);
cpu_register_physical_memory(0, 0xa0000, ram_addr);
cpu_register_physical_memory(0x100000,
below_4g_mem_size - 0x100000,
ram_addr + 0x100000);
-
- /* above 4giga memory allocation */
- if (above_4g_mem_size > 0) {
-#if TARGET_PHYS_ADDR_BITS == 32
- hw_error("To much RAM for 32-bit physical address");
-#else
- ram_addr = qemu_ram_alloc(above_4g_mem_size);
- cpu_register_physical_memory(0x100000000ULL,
- above_4g_mem_size,
- ram_addr);
+#if TARGET_PHYS_ADDR_BITS > 32
+ cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
+ ram_addr + below_4g_mem_size);
#endif
- }
-
/* BIOS load */
if (bios_name == NULL)