diff options
author | Igor Mammedov | 2020-02-19 17:08:41 +0100 |
---|---|---|
committer | Patchew Importer | 2020-02-19 17:49:54 +0100 |
commit | fe64d06afc1c5d895f220c268cfe4d5f1e65d44e (patch) | |
tree | 7a510e51d0c2cff98c01543888bf1c74f11cc5a6 | |
parent | vl.c: move -m parsing after memory backends has been processed (diff) | |
download | qemu-fe64d06afc1c5d895f220c268cfe4d5f1e65d44e.tar.gz qemu-fe64d06afc1c5d895f220c268cfe4d5f1e65d44e.tar.xz qemu-fe64d06afc1c5d895f220c268cfe4d5f1e65d44e.zip |
vl.c: ensure that ram_size matches size of machine.memory-backend
Extend set_memory_options() to check that size specified by -m
matches the size of backend pointed by memory-backend.
And in case of -m was omitted adjust ram_size to match that
of explicitly provided backend.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20200219160953.13771-8-imammedo@redhat.com>
-rw-r--r-- | vl.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -2655,6 +2655,21 @@ static void set_memory_options(uint64_t *ram_slots, ram_addr_t *maxram_size, exit(EXIT_FAILURE); } + if (current_machine->ram_memdev_id) { + Object *backend; + ram_addr_t backend_size; + + backend = object_resolve_path_type(current_machine->ram_memdev_id, + TYPE_MEMORY_BACKEND, NULL); + backend_size = object_property_get_uint(backend, "size", &error_abort); + if (mem_str && backend_size != ram_size) { + error_report("Size specified by -m option must match size of " + "explicitly specified 'memory-backend' property"); + exit(EXIT_FAILURE); + } + ram_size = backend_size; + } + if (!xen_enabled()) { /* On 32-bit hosts, QEMU is limited by virtual address space */ if (ram_size > (2047 << 20) && HOST_LONG_BITS == 32) { |