qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v5 02/79] machine: introduce memory-backend property


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v5 02/79] machine: introduce memory-backend property
Date: Tue, 18 Feb 2020 18:10:42 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1

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 <address@hidden>
---
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 <address@hidden>)

CC: address@hidden
CC: address@hidden
CC: address@hidden
---
  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é <address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]