[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 24/49] core/machine: Make create_default_memdev machine a virtual
From: |
Paolo Bonzini |
Subject: |
[PULL 24/49] core/machine: Make create_default_memdev machine a virtual method |
Date: |
Thu, 31 Oct 2024 18:51:48 +0100 |
From: Dorjoy Chowdhury <dorjoychy111@gmail.com>
This is in preparation for the next commit where the nitro-enclave
machine type will need to instead use a memfd backend, for the built-in
vhost-user-vsock device to work.
Signed-off-by: Dorjoy Chowdhury <dorjoychy111@gmail.com>
Reviewed-by: Alexander Graf <graf@amazon.com>
Link: 20241008211727.49088-5-dorjoychy111@gmail.com">https://lore.kernel.org/r/20241008211727.49088-5-dorjoychy111@gmail.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/hw/boards.h | 2 ++
include/sysemu/hostmem.h | 2 ++
backends/hostmem-memfd.c | 2 --
hw/core/machine.c | 71 +++++++++++++++++++++-------------------
4 files changed, 42 insertions(+), 35 deletions(-)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 5966069baab..91f2edd3924 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -314,6 +314,8 @@ struct MachineClass {
int64_t (*get_default_cpu_node_id)(const MachineState *ms, int idx);
ram_addr_t (*fixup_ram_size)(ram_addr_t size);
uint64_t smbios_memory_device_size;
+ bool (*create_default_memdev)(MachineState *ms, const char *path,
+ Error **errp);
};
/**
diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h
index de47ae59e4b..67f45abe392 100644
--- a/include/sysemu/hostmem.h
+++ b/include/sysemu/hostmem.h
@@ -39,6 +39,8 @@ OBJECT_DECLARE_TYPE(HostMemoryBackend, HostMemoryBackendClass,
*/
#define TYPE_MEMORY_BACKEND_FILE "memory-backend-file"
+#define TYPE_MEMORY_BACKEND_MEMFD "memory-backend-memfd"
+
/**
* HostMemoryBackendClass:
diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c
index 6a3c89a12b2..9f890a813e1 100644
--- a/backends/hostmem-memfd.c
+++ b/backends/hostmem-memfd.c
@@ -18,8 +18,6 @@
#include "qapi/error.h"
#include "qom/object.h"
-#define TYPE_MEMORY_BACKEND_MEMFD "memory-backend-memfd"
-
OBJECT_DECLARE_SIMPLE_TYPE(HostMemoryBackendMemfd, MEMORY_BACKEND_MEMFD)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index adaba17ebac..222799bc46e 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -1001,6 +1001,39 @@ void machine_add_audiodev_property(MachineClass *mc)
"Audiodev to use for default machine
devices");
}
+static bool create_default_memdev(MachineState *ms, const char *path,
+ Error **errp)
+{
+ Object *obj;
+ MachineClass *mc = MACHINE_GET_CLASS(ms);
+ bool r = false;
+
+ obj = object_new(path ? TYPE_MEMORY_BACKEND_FILE :
TYPE_MEMORY_BACKEND_RAM);
+ if (path) {
+ if (!object_property_set_str(obj, "mem-path", path, errp)) {
+ goto out;
+ }
+ }
+ if (!object_property_set_int(obj, "size", ms->ram_size, errp)) {
+ goto out;
+ }
+ object_property_add_child(object_get_objects_root(), mc->default_ram_id,
+ obj);
+ /* Ensure backend's memory region name is equal to mc->default_ram_id */
+ if (!object_property_set_bool(obj, "x-use-canonical-path-for-ramblock-id",
+ false, errp)) {
+ goto out;
+ }
+ if (!user_creatable_complete(USER_CREATABLE(obj), errp)) {
+ goto out;
+ }
+ r = object_property_set_link(OBJECT(ms), "memory-backend", obj, errp);
+
+out:
+ object_unref(obj);
+ return r;
+}
+
static void machine_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
@@ -1020,6 +1053,8 @@ static void machine_class_init(ObjectClass *oc, void
*data)
*/
mc->numa_mem_align_shift = 23;
+ mc->create_default_memdev = create_default_memdev;
+
object_class_property_add_str(oc, "kernel",
machine_get_kernel, machine_set_kernel);
object_class_property_set_description(oc, "kernel",
@@ -1413,38 +1448,6 @@ MemoryRegion *machine_consume_memdev(MachineState
*machine,
return ret;
}
-static bool create_default_memdev(MachineState *ms, const char *path, Error
**errp)
-{
- Object *obj;
- MachineClass *mc = MACHINE_GET_CLASS(ms);
- bool r = false;
-
- obj = object_new(path ? TYPE_MEMORY_BACKEND_FILE :
TYPE_MEMORY_BACKEND_RAM);
- if (path) {
- if (!object_property_set_str(obj, "mem-path", path, errp)) {
- goto out;
- }
- }
- if (!object_property_set_int(obj, "size", ms->ram_size, errp)) {
- goto out;
- }
- object_property_add_child(object_get_objects_root(), mc->default_ram_id,
- obj);
- /* Ensure backend's memory region name is equal to mc->default_ram_id */
- if (!object_property_set_bool(obj, "x-use-canonical-path-for-ramblock-id",
- false, errp)) {
- goto out;
- }
- if (!user_creatable_complete(USER_CREATABLE(obj), errp)) {
- goto out;
- }
- r = object_property_set_link(OBJECT(ms), "memory-backend", obj, errp);
-
-out:
- object_unref(obj);
- return r;
-}
-
const char *machine_class_default_cpu_type(MachineClass *mc)
{
if (mc->valid_cpu_types && !mc->valid_cpu_types[1]) {
@@ -1548,7 +1551,9 @@ void machine_run_board_init(MachineState *machine, const
char *mem_path, Error *
machine_class->default_ram_id);
return;
}
- if (!create_default_memdev(current_machine, mem_path, errp)) {
+
+ if (!machine_class->create_default_memdev(current_machine, mem_path,
+ errp)) {
return;
}
}
--
2.47.0
- [PULL 13/49] qom: centralize module-loading functionality, (continued)
- [PULL 13/49] qom: centralize module-loading functionality, Paolo Bonzini, 2024/10/31
- [PULL 15/49] qom: allow user-creatable classes to be in modules, Paolo Bonzini, 2024/10/31
- [PULL 18/49] target/i386: Expose bits related to SRSO vulnerability, Paolo Bonzini, 2024/10/31
- [PULL 16/49] target/i386: Fix minor typo in NO_NESTED_DATA_BP feature bit, Paolo Bonzini, 2024/10/31
- [PULL 17/49] target/i386: Add PerfMonV2 feature bit, Paolo Bonzini, 2024/10/31
- [PULL 20/49] target/i386/hvf: fix handling of XSAVE-related CPUID bits, Paolo Bonzini, 2024/10/31
- [PULL 19/49] target/i386: Expose new feature bits in CPUID 8000_0021_EAX/EBX, Paolo Bonzini, 2024/10/31
- [PULL 21/49] tests/lcitool: Update libvirt-ci and add libcbor dependency, Paolo Bonzini, 2024/10/31
- [PULL 23/49] hw/core: Add Enclave Image Format (EIF) related helpers, Paolo Bonzini, 2024/10/31
- [PULL 22/49] device/virtio-nsm: Support for Nitro Secure Module device, Paolo Bonzini, 2024/10/31
- [PULL 24/49] core/machine: Make create_default_memdev machine a virtual method,
Paolo Bonzini <=
- [PULL 25/49] machine/nitro-enclave: New machine type for AWS Nitro Enclaves, Paolo Bonzini, 2024/10/31
- [PULL 31/49] target/i386: Rearrange CCOp, Paolo Bonzini, 2024/10/31
- [PULL 34/49] target/i386: optimize computation of ZF from CC_OP_DYNAMIC, Paolo Bonzini, 2024/10/31
- [PULL 35/49] target/i386: optimize TEST+Jxx sequences, Paolo Bonzini, 2024/10/31
- [PULL 39/49] target/i386: use compiler builtin to compute PF, Paolo Bonzini, 2024/10/31
- [PULL 49/49] target/i386: Introduce GraniteRapids-v2 model, Paolo Bonzini, 2024/10/31
- [PULL 30/49] target/i386: remove CC_OP_CLR, Paolo Bonzini, 2024/10/31
- [PULL 28/49] target/i386: use tcg_gen_ext_tl when applicable, Paolo Bonzini, 2024/10/31
- [PULL 36/49] target/i386: add a few more trivial CCPrepare cases, Paolo Bonzini, 2024/10/31
- [PULL 42/49] target/i386: cpu: set correct supported XCR0 features for TCG, Paolo Bonzini, 2024/10/31