|
@@ -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);
|