{"id":2219349,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2219349/?format=json","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.0/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260402215629.745866-29-ruslichenko.r@gmail.com>","date":"2026-04-02T21:56:13","name":"[v3,28/33] system/memory: add QOM aliases for fdt support","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"f7c990a8efa7a816f9b220f73edeadfad2159839","submitter":{"id":92275,"url":"http://patchwork.ozlabs.org/api/1.0/people/92275/?format=json","name":"Ruslan Ruslichenko","email":"ruslichenko.r@gmail.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260402215629.745866-29-ruslichenko.r@gmail.com/mbox/","series":[{"id":498555,"url":"http://patchwork.ozlabs.org/api/1.0/series/498555/?format=json","date":"2026-04-02T21:55:47","name":"hw/arm: Introduce generic FDT-driven machine","version":3,"mbox":"http://patchwork.ozlabs.org/series/498555/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2219349/checks/","tags":{},"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Ms/btjQp;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmwjl4vr9z1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 08:59:07 +1100 (AEDT)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w8Q38-0000bN-WD; Thu, 02 Apr 2026 17:58:03 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <ruslichenko.r@gmail.com>)\n id 1w8Q2j-0000H2-2T\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:38 -0400","from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <ruslichenko.r@gmail.com>)\n id 1w8Q2g-0007GI-2s\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:36 -0400","by mail-ej1-x62c.google.com with SMTP id\n a640c23a62f3a-b982518b73fso207763666b.1\n for <qemu-devel@nongnu.org>; Thu, 02 Apr 2026 14:57:32 -0700 (PDT)","from thinkpad-t470s.. (93-143-182-244.adsl.net.t-com.hr.\n [93.143.182.244]) by smtp.googlemail.com with ESMTPSA id\n a640c23a62f3a-b9c3cac0e1asm134009166b.27.2026.04.02.14.57.29\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 02 Apr 2026 14:57:30 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775167051; x=1775771851; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=Cm4Knrt01+q22g03cv2LHlISpCqmkMA20253kshEnnc=;\n b=Ms/btjQpogWBBhSkMEfuT5y12TPi2cVxUJSoyc7Xne2ojCeEovYXz71zyFKTz3uszA\n tpbDe8JUu7231r3c0fS1Lq7XWkRCEcovfG8A5e7VjjarKVPzPF7fecSY43yYlxQTcwXw\n XZd+keciCt1y85dLMKXt52uDYRH0Q6887mBmNP4jdDzO0PWboMj4w547lpCEBwYSPnv+\n r3u3TKhFGzzCVP7rvKvmREVWfL6L/wWrI1SDavpCLm6qgRhiWh/qQnoFhITM/t6wHZuj\n r98tY/bAOe7Dzq+5K81jvItKmH8TOWX4+hCU/ZiKfys4ATSeXZOyefQni1+Q0f0yrdDA\n rjsQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775167051; x=1775771851;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Cm4Knrt01+q22g03cv2LHlISpCqmkMA20253kshEnnc=;\n b=mZgDBWVZGt1Fo6wU5d0J17ElCAkLKmrS7kLybUXt24X3Q2XdbDaDvD+Fsy/0f+wzKR\n MfJFQUYksb0ReohVrZwaf8EqFKsP5IkpSYCfiKg7ef+mD+kIrorQKAnHNMOrAL7/R+KM\n J/kmgW3pFOpLzukKs8qnIMtY+64/js2UZVonTBE9paJxdyI6kPwd4H2DWI7v2shy7upO\n kMeQXb1dQboQmICjkciFGQhNe+5S7PTbl1DQ4Ikv7y33mw500R3ZyPD7y8HM4aPZDLNr\n 0Q2Hr36RddkdC5h3c21wWQqrRho0fRjZMK/0M74TisdXtNe3U5zGQxWyGeXiVXPjScs4\n QlDQ==","X-Gm-Message-State":"AOJu0Yy6RH/N4fimIoAOXg8kE0K89ne3hkJzC4EgdEABRiVTaPSCZ3Im\n l1u2OWnhbqWqaSyj2q3XQpmxALaQviz1hdACBq9wuTZ1eq17wfTPKCGTOavx7PWO","X-Gm-Gg":"ATEYQzxSigjC60BU9yX/ZeLQJFnguWE2RqmWi3X7pKsIhubC2fawm4DCG4uX6EQ1MTN\n JOlDmLeuMoub6j831+mPpezJ0n+j7YYPNABLG5FDF3PNKBSf1UfbDeTCD5mJWFg6xN5JuQ89uqM\n sUEwvp2L2VQL690xsmLLZxn2z1w/uy8NVWsKv6PAlECJ3dAcqDTo/FiiwyHWumJFOM2u5HaW2v1\n pzKqZyxK2yi/r/kGd3PKnFVgUGkRUHvLTWBRoBXp/lHjlQdaAQ0+syhbI2lsG5uNqU42TA1xsTm\n z22EgNM/9zLYq5xgAts+oES2HL4Q8ib0UwmegqdTBYKUbFpq7TK3HUlKQBr8dyLcneSAPlmTS6B\n FdDdgoARMN4IcQqoFuFqh6HFReU/Glap1Uxa12pfL0QeLdfROcp0GrG4jZmUprUvYC9WSyRtOeq\n uirXshn94vh4Ly1Cyx4FUKCflj6ozrG/35xkYxpUHP7PxDy+Iz9tjaktEwZbgS/OZbmOfLVw==","X-Received":"by 2002:a17:907:3e8a:b0:b99:7462:3c57 with SMTP id\n a640c23a62f3a-b9c6754ad85mr23799266b.14.1775167051283;\n Thu, 02 Apr 2026 14:57:31 -0700 (PDT)","From":"Ruslan Ruslichenko <ruslichenko.r@gmail.com>","To":"qemu-devel@nongnu.org","Cc":"qemu-arm@nongnu.org, alex.bennee@linaro.org, peter.maydell@linaro.org,\n artem_mygaiev@epam.com, volodymyr_babchuk@epam.com,\n takahiro.nakata.wr@renesas.com,\n \"Edgar E . Iglesias\" <edgar.iglesias@gmail.com>, Ruslan_Ruslichenko@epam.com,\n balaton@eik.bme.hu, Paolo Bonzini <pbonzini@redhat.com>,\n Peter Xu <peterx@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Subject":"[PATCH v3 28/33] system/memory: add QOM aliases for fdt support","Date":"Thu,  2 Apr 2026 23:56:13 +0200","Message-ID":"<20260402215629.745866-29-ruslichenko.r@gmail.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260402215629.745866-1-ruslichenko.r@gmail.com>","References":"<20260402215629.745866-1-ruslichenko.r@gmail.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::62c;\n envelope-from=ruslichenko.r@gmail.com; helo=mail-ej1-x62c.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>\n\nThe patch registers FDT compatibility handlers and\nQOM aliases of memory subsystem, so that memory\nregions can be created from a device tree model.\n\nThe alias 'qemu:system-memory' could be used to attach\nsubregion to root address space.\nThe system memory can also be attached to another\ncontainer with other priority, which may be used\nfor implementing secure memory structures.\n\nAlso 'qemu-memory-region' types can be used to create\nnew memory regions.\n\nSigned-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>\n---\n system/memory.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 78 insertions(+)","diff":"diff --git a/system/memory.c b/system/memory.c\nindex b3d981dc0c..bd8b6e06ad 100644\n--- a/system/memory.c\n+++ b/system/memory.c\n@@ -4024,3 +4024,81 @@ static void memory_register_types(void)\n }\n \n type_init(memory_register_types)\n+\n+static int sysmem_fdt_init(char *node_path, FDTMachineInfo *fdti,\n+                           void *priv)\n+{\n+    int i, ret = 0, priority = 0;\n+    uint32_t container_phandle;\n+    MemoryRegion *container;\n+    char container_node_path[DT_PATH_LENGTH];\n+    FDTGenericRegPropInfo *reg;\n+    Error *errp = NULL;\n+\n+    fdt_init_set_opaque(fdti, node_path, OBJECT(get_system_memory()));\n+\n+    /* allow to set system_memory region as subregion */\n+    container_phandle = qemu_fdt_getprop_cell(fdti->fdt, node_path,\n+                                            \"container\",\n+                                            0, &errp);\n+    if (errp) {\n+        /* container is an optional property */\n+        error_free(errp);\n+        return 0;\n+    }\n+\n+    if (qemu_devtree_get_node_by_phandle(fdti->fdt, container_node_path,\n+                                            container_phandle)) {\n+        error_report(\"failed to get container node\");\n+        return -1;\n+    }\n+\n+    while (!fdt_init_has_opaque(fdti, container_node_path)) {\n+        fdt_init_yield(fdti);\n+    }\n+\n+    container = MEMORY_REGION(fdt_init_get_opaque(fdti,\n+                                                    container_node_path));\n+    reg = fdt_get_reg_info(fdti, node_path, OBJECT(get_system_memory()));\n+    if (reg && reg->n > 0) {\n+        if (reg->x[0][0] || reg->x[1][0]) {\n+            error_report(\"can't change sysmem address or size\");\n+            ret = -1;\n+            goto out;\n+        }\n+        priority = reg->x[3][0];\n+    }\n+\n+    memory_region_add_subregion_overlap(container, 0,\n+                                        get_system_memory(), priority);\n+\n+out:\n+    if (reg) {\n+        g_free(reg->parents);\n+\n+        for (i = 0; i < FDT_GENERIC_REG_TUPLE_LENGTH; ++i) {\n+            g_free(reg->x[i]);\n+        }\n+\n+        g_free(reg);\n+    }\n+    return ret;\n+}\n+\n+fdt_register_compatibility(sysmem_fdt_init, \"compatible:qemu:system-memory\");\n+\n+static const TypeInfo fdt_qom_aliases[] = {\n+    {   .name = \"qemu-memory-region\",       .parent = \"memory-region\"  },\n+    {   .name = \"simple-bus\",               .parent = \"memory-region\"  },\n+};\n+\n+static void fdt_memory_types(void)\n+{\n+    int i;\n+\n+    for (i = 0; i < ARRAY_SIZE(fdt_qom_aliases); ++i) {\n+        type_register_static(&fdt_qom_aliases[i]);\n+    }\n+}\n+\n+type_init(fdt_memory_types)\n","prefixes":["v3","28/33"]}