diff options
| author | Igor Mammedov <imammedo@redhat.com> | 2020-02-19 11:08:37 -0500 |
|---|---|---|
| committer | Patchew Importer <importer@patchew.org> | 2020-02-19 16:49:53 +0000 |
| commit | 900c0ba373aada4c13d47d95330aa72ec4067ba5 (patch) | |
| tree | 33a2a784e058d805440f8e2c8f7dac7ba6f4a1a5 /vl.c | |
| parent | aa8b183974b27d4dc025905eb869a1941e85e17d (diff) | |
| download | focaccia-qemu-900c0ba373aada4c13d47d95330aa72ec4067ba5.tar.gz focaccia-qemu-900c0ba373aada4c13d47d95330aa72ec4067ba5.zip | |
machine: alias -mem-path and -mem-prealloc into memory-foo backend
Allow machine to opt in for hostmem backend based initial RAM even if user uses old -mem-path/prealloc options by providing MachineClass::default_ram_id Follow up patches will incrementally convert machines to new API, by dropping memory_region_allocate_system_memory() and setting default_ram_id that board used to use before conversion to keep migration stream the same. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20200219160953.13771-4-imammedo@redhat.com>
Diffstat (limited to 'vl.c')
| -rw-r--r-- | vl.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/vl.c b/vl.c index 794f2e5733..4dc4803611 100644 --- a/vl.c +++ b/vl.c @@ -75,6 +75,7 @@ int main(int argc, char **argv) #include "ui/input.h" #include "sysemu/sysemu.h" #include "sysemu/numa.h" +#include "sysemu/hostmem.h" #include "exec/gdbstub.h" #include "qemu/timer.h" #include "chardev/char.h" @@ -2805,6 +2806,26 @@ static void configure_accelerators(const char *progname) } } +static void create_default_memdev(MachineState *ms, const char *path, + bool prealloc) +{ + Object *obj; + MachineClass *mc = MACHINE_GET_CLASS(ms); + + obj = object_new(path ? TYPE_MEMORY_BACKEND_FILE : TYPE_MEMORY_BACKEND_RAM); + if (path) { + object_property_set_str(obj, path, "mem-path", &error_fatal); + } + object_property_set_bool(obj, prealloc, "prealloc", &error_fatal); + object_property_set_int(obj, ms->ram_size, "size", &error_fatal); + object_property_add_child(object_get_objects_root(), mc->default_ram_id, + obj, &error_fatal); + user_creatable_complete(USER_CREATABLE(obj), &error_fatal); + object_unref(obj); + object_property_set_str(OBJECT(ms), mc->default_ram_id, "memory-backend", + &error_fatal); +} + int main(int argc, char **argv, char **envp) { int i; @@ -4268,6 +4289,10 @@ int main(int argc, char **argv, char **envp) } parse_numa_opts(current_machine); + if (machine_class->default_ram_id && current_machine->ram_size && + !current_machine->ram_memdev_id) { + create_default_memdev(current_machine, mem_path, mem_prealloc); + } /* do monitor/qmp handling at preconfig state if requested */ main_loop(); |