From f2c385220598523c8b9fefbfff1a6754cfd8232a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 29 Jan 2015 14:48:41 +0100 Subject: pc: memory: Validate alignment of maxram_size to page size 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 Reviewed-by: Eric Blake Acked-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Signed-off-by: Peter Krempa Reviewed-by: Eric Blake --- hw/i386/pc.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'hw/i386/pc.c') diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 60d4e02847..ae3ef0af4f 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -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); -- cgit v1.2.1