Message ID | 20200217173452.15243-3-imammedo@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | refactor main RAM allocation to use hostmem backend | expand |
On 2/17/20 9:33 AM, Igor Mammedov wrote: > Property will contain link to memory backend that will be > used for backing initial RAM. > Follow up commit will alias -mem-path and -mem-prealloc > CLI options into memory backend options to make memory > handling consistent (using only hostmem backend family > for guest RAM allocation). > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> > --- > v4: > * make property a string, instead of a link. > Fixes -M memory-backend=foo: foo not found error > since foo creation is delayed well beyond point > where machine's properties are set > v3: > * rename property name from ram-memdev to memory-backend > (Paolo Bonzini <pbonzini@redhat.com>) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 2/17/20 6:33 PM, Igor Mammedov wrote: > Property will contain link to memory backend that will be > used for backing initial RAM. > Follow up commit will alias -mem-path and -mem-prealloc > CLI options into memory backend options to make memory > handling consistent (using only hostmem backend family > for guest RAM allocation). > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> > --- > v4: > * make property a string, instead of a link. > Fixes -M memory-backend=foo: foo not found error > since foo creation is delayed well beyond point > where machine's properties are set > v3: > * rename property name from ram-memdev to memory-backend > (Paolo Bonzini <pbonzini@redhat.com>) > > CC: ehabkost@redhat.com > CC: pbonzini@redhat.com > CC: pasic@linux.ibm.com > --- > include/hw/boards.h | 2 ++ > hw/core/machine.c | 24 ++++++++++++++++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/include/hw/boards.h b/include/hw/boards.h > index fb1b43d5b9..7b4b6b79d7 100644 > --- a/include/hw/boards.h > +++ b/include/hw/boards.h > @@ -4,6 +4,7 @@ > #define HW_BOARDS_H > > #include "exec/memory.h" > +#include "sysemu/hostmem.h" > #include "sysemu/blockdev.h" > #include "sysemu/accel.h" > #include "qapi/qapi-types-machine.h" > @@ -285,6 +286,7 @@ struct MachineState { > bool enforce_config_section; > bool enable_graphics; > char *memory_encryption; > + char *ram_memdev_id; > DeviceMemoryState *device_memory; > > ram_addr_t ram_size; > diff --git a/hw/core/machine.c b/hw/core/machine.c > index 84812a1d1c..1a6e485c87 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -508,6 +508,22 @@ static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque) > } > } > > +static char *machine_get_memdev(Object *obj, Error **errp) > +{ > + MachineState *ms = MACHINE(obj); > + > + return g_strdup(ms->ram_memdev_id); > +} > + > +static void machine_set_memdev(Object *obj, const char *value, Error **errp) > +{ > + MachineState *ms = MACHINE(obj); > + > + g_free(ms->ram_memdev_id); > + ms->ram_memdev_id = g_strdup(value); > +} > + > + > static void machine_init_notify(Notifier *notifier, void *data) > { > MachineState *machine = MACHINE(qdev_get_machine()); > @@ -889,6 +905,14 @@ static void machine_initfn(Object *obj) > "Table (HMAT)", NULL); > } > > + object_property_add_str(obj, "memory-backend", > + machine_get_memdev, machine_set_memdev, > + &error_abort); > + object_property_set_description(obj, "memory-backend", > + "Set RAM backend" > + "Valid value is ID of hostmem based backend", > + &error_abort); > + > /* Register notifier when init is done for sysbus sanity checks */ > ms->sysbus_notifier.notify = machine_init_notify; > qemu_add_machine_init_done_notifier(&ms->sysbus_notifier); > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
diff --git a/include/hw/boards.h b/include/hw/boards.h index fb1b43d5b9..7b4b6b79d7 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -4,6 +4,7 @@ #define HW_BOARDS_H #include "exec/memory.h" +#include "sysemu/hostmem.h" #include "sysemu/blockdev.h" #include "sysemu/accel.h" #include "qapi/qapi-types-machine.h" @@ -285,6 +286,7 @@ struct MachineState { bool enforce_config_section; bool enable_graphics; char *memory_encryption; + char *ram_memdev_id; DeviceMemoryState *device_memory; ram_addr_t ram_size; diff --git a/hw/core/machine.c b/hw/core/machine.c index 84812a1d1c..1a6e485c87 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -508,6 +508,22 @@ static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque) } } +static char *machine_get_memdev(Object *obj, Error **errp) +{ + MachineState *ms = MACHINE(obj); + + return g_strdup(ms->ram_memdev_id); +} + +static void machine_set_memdev(Object *obj, const char *value, Error **errp) +{ + MachineState *ms = MACHINE(obj); + + g_free(ms->ram_memdev_id); + ms->ram_memdev_id = g_strdup(value); +} + + static void machine_init_notify(Notifier *notifier, void *data) { MachineState *machine = MACHINE(qdev_get_machine()); @@ -889,6 +905,14 @@ static void machine_initfn(Object *obj) "Table (HMAT)", NULL); } + object_property_add_str(obj, "memory-backend", + machine_get_memdev, machine_set_memdev, + &error_abort); + object_property_set_description(obj, "memory-backend", + "Set RAM backend" + "Valid value is ID of hostmem based backend", + &error_abort); + /* Register notifier when init is done for sysbus sanity checks */ ms->sysbus_notifier.notify = machine_init_notify; qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
Property will contain link to memory backend that will be used for backing initial RAM. Follow up commit will alias -mem-path and -mem-prealloc CLI options into memory backend options to make memory handling consistent (using only hostmem backend family for guest RAM allocation). Signed-off-by: Igor Mammedov <imammedo@redhat.com> --- v4: * make property a string, instead of a link. Fixes -M memory-backend=foo: foo not found error since foo creation is delayed well beyond point where machine's properties are set v3: * rename property name from ram-memdev to memory-backend (Paolo Bonzini <pbonzini@redhat.com>) CC: ehabkost@redhat.com CC: pbonzini@redhat.com CC: pasic@linux.ibm.com --- include/hw/boards.h | 2 ++ hw/core/machine.c | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+)