Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/core/numa.c | 11 +++++++----
include/hw/boards.h | 6 ++++--
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/core/numa.c b/hw/core/numa.c
index 038c96d4ab..2e29e4bfe0 100644
--- a/hw/core/numa.c
+++ b/hw/core/numa.c
@@ -520,21 +520,24 @@ static void allocate_system_memory_nonnuma(MemoryRegion
*mr, Object *owner,
vmstate_register_ram_global(mr);
}
-void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
+void memory_region_allocate_system_memory(MemoryRegion *mr, MachineState *ms,
const char *name,
uint64_t ram_size)
{
uint64_t addr = 0;
int i;
- MachineState *ms = MACHINE(qdev_get_machine());
+
+ if (!ms) {
+ ms = MACHINE(qdev_get_machine());
+ }
if (ms->numa_state == NULL ||
ms->numa_state->num_nodes == 0 || !have_memdevs) {
- allocate_system_memory_nonnuma(mr, owner, name, ram_size);
+ allocate_system_memory_nonnuma(mr, OBJECT(ms), name, ram_size);
return;
}
- memory_region_init(mr, owner, name, ram_size);
+ memory_region_init(mr, OBJECT(ms), name, ram_size);
for (i = 0; i < ms->numa_state->num_nodes; i++) {
uint64_t size = ms->numa_state->nodes[i].node_mem;
HostMemoryBackend *backend = ms->numa_state->nodes[i].node_memdev;
diff --git a/include/hw/boards.h b/include/hw/boards.h
index de45087f34..3b6cb82b6c 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -14,7 +14,7 @@
/**
* memory_region_allocate_system_memory - Allocate a board's main memory
* @mr: the #MemoryRegion to be initialized
- * @owner: the object that tracks the region's reference count
+ * @ms: the #MachineState object that own the system memory
* @name: name of the memory region
* @ram_size: size of the region in bytes
*
@@ -38,8 +38,10 @@
* Smaller pieces of memory (display RAM, static RAMs, etc) don't need
* to be backed via the -mem-path memory backend and can simply
* be created via memory_region_init_ram().
+ *
+ * The #MachineState object will track the region's reference count.
*/
-void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
+void memory_region_allocate_system_memory(MemoryRegion *mr, MachineState *ms,
const char *name,
uint64_t ram_size);