diff options
author | David Hildenbrand <david@redhat.com> | 2023-06-23 14:45:45 +0200 |
---|---|---|
committer | David Hildenbrand <david@redhat.com> | 2023-07-12 09:25:35 +0200 |
commit | cc0afd8a72996352e9f3f11b1cdde49b08aa11b6 (patch) | |
tree | e20f32bdda208ee2862f760ec094188925c2dfb4 | |
parent | 99d88de6eb577ff70cc1b1ed59f1a50f16038c2e (diff) | |
download | qemu-cc0afd8a72996352e9f3f11b1cdde49b08aa11b6.zip qemu-cc0afd8a72996352e9f3f11b1cdde49b08aa11b6.tar.gz qemu-cc0afd8a72996352e9f3f11b1cdde49b08aa11b6.tar.bz2 |
memory-device: Introduce machine_memory_devices_init()
Let's intrduce a new helper that we will use to replace existing memory
device setup code during machine initialization. We'll enforce that the
size has to be > 0.
Once all machines were converted, we'll only allocate ms->device_memory
if the size > 0.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20230623124553.400585-3-david@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
-rw-r--r-- | hw/mem/memory-device.c | 14 | ||||
-rw-r--r-- | include/hw/boards.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index 49f86ec..bb9d7c2 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -17,6 +17,7 @@ #include "qemu/range.h" #include "hw/virtio/vhost.h" #include "sysemu/kvm.h" +#include "exec/address-spaces.h" #include "trace.h" static gint memory_device_addr_sort(gconstpointer a, gconstpointer b) @@ -328,6 +329,19 @@ uint64_t memory_device_get_region_size(const MemoryDeviceState *md, return memory_region_size(mr); } +void machine_memory_devices_init(MachineState *ms, hwaddr base, uint64_t size) +{ + g_assert(size); + g_assert(!ms->device_memory); + ms->device_memory = g_new0(DeviceMemoryState, 1); + ms->device_memory->base = base; + + memory_region_init(&ms->device_memory->mr, OBJECT(ms), "device-memory", + size); + memory_region_add_subregion(get_system_memory(), ms->device_memory->base, + &ms->device_memory->mr); +} + static const TypeInfo memory_device_info = { .name = TYPE_MEMORY_DEVICE, .parent = TYPE_INTERFACE, diff --git a/include/hw/boards.h b/include/hw/boards.h index 12d9e9d..3b7c30e 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -37,6 +37,7 @@ void machine_parse_smp_config(MachineState *ms, const SMPConfiguration *config, Error **errp); unsigned int machine_topo_get_cores_per_socket(const MachineState *ms); unsigned int machine_topo_get_threads_per_socket(const MachineState *ms); +void machine_memory_devices_init(MachineState *ms, hwaddr base, uint64_t size); /** * machine_class_allow_dynamic_sysbus_dev: Add type to list of valid devices |