[RFC PATCH v2 108/137] memory: Require an owner for named memory regions

Alexander Graf <[email protected]>
Newsgroups org.nongnu.qemu-arm,org.nongnu.qemu-devel,org.nongnu.qemu-riscv
Message-ID <[email protected]>
Now that every named memory region in the tree passes an explicit
owner, replace the /machine/unattached fallback in
memory_region_do_init() and portio_list_add_1() with an assertion.

Anonymous (name==NULL) regions such as subpages and io_mem_unassigned
are never QOM-parented and continue to accept a NULL owner.

AI-used-for: code (refactoring)
Signed-off-by: Alexander Graf <[email protected]>
---
 system/ioport.c | 7 ++-----
 system/memory.c | 7 +++----
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/system/ioport.c b/system/ioport.c
index 0a1b80f299..0415b3cd60 100644
--- a/system/ioport.c
+++ b/system/ioport.c
@@ -248,11 +248,8 @@ static void portio_list_add_1(PortioList *piolist,
     /* Reparent the MemoryRegion to the piolist owner */
     object_ref(&mrpio->mr);
     object_unparent(OBJECT(&mrpio->mr));
-    if (!piolist->owner) {
-        owner = machine_get_container("unattached");
-    } else {
-        owner = piolist->owner;
-    }
+    g_assert(piolist->owner);
+    owner = piolist->owner;
     name = g_strdup_printf("%s[*]", piolist->name);
     object_property_add_child(owner, name, OBJECT(&mrpio->mr));
     g_free(name);
diff --git a/system/memory.c b/system/memory.c
index 838be57b4d..d1ac7ffa04 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -1230,14 +1230,13 @@ static void memory_region_do_init(MemoryRegion *mr,
     mr->dev = (DeviceState *) object_dynamic_cast(mr->owner, TYPE_DEVICE);
     mr->ram_block = NULL;
 
+    /* A named MemoryRegion is a QOM child of @owner */
+    g_assert(!name || owner);
+
     if (name) {
         char *escaped_name = memory_region_escape_name(name);
         char *name_array = g_strdup_printf("%s[*]", escaped_name);
 
-        if (!owner) {
-            owner = machine_get_container("unattached");
-        }
-
         object_property_add_child(owner, name_array, OBJECT(mr));
         object_unref(OBJECT(mr));
         g_free(name_array);
-- 
2.47.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.