]> git.proxmox.com Git - mirror_qemu.git/commitdiff
pc: memory: Validate alignment of maxram_size to page size
authorPeter Krempa <pkrempa@redhat.com>
Thu, 29 Jan 2015 13:48:41 +0000 (14:48 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 26 Feb 2015 11:42:19 +0000 (12:42 +0100)
If the maxram_size is not aligned and dimm devices were added on the
command line qemu would terminate with a rather unhelpful message:

ERROR:hw/mem/pc-dimm.c:150:pc_dimm_get_free_addr: assertion failed:
(QEMU_ALIGN_UP(address_space_size, align) == address_space_size)

In case no dimm device was originally added on the commandline qemu
exits on the assertion failure.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
hw/i386/pc.c

index 60d4e02847b477ea0b027f4b3b4c7a9e714ea75f..ae3ef0af4f987b061ed72f915ff8f03d58a81242 100644 (file)
@@ -1245,6 +1245,13 @@ FWCfgState *pc_memory_init(MachineState *machine,
             exit(EXIT_FAILURE);
         }
 
+        if (QEMU_ALIGN_UP(machine->maxram_size,
+                          TARGET_PAGE_SIZE) != machine->maxram_size) {
+            error_report("maximum memory size must by aligned to multiple of "
+                         "%d bytes", TARGET_PAGE_SIZE);
+            exit(EXIT_FAILURE);
+        }
+
         pcms->hotplug_memory_base =
             ROUND_UP(0x100000000ULL + above_4g_mem_size, 1ULL << 30);