Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2219367/?format=api
{ "id": 2219367, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2219367/?format=api", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.0/projects/14/?format=api", "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-27-ruslichenko.r@gmail.com>", "date": "2026-04-02T21:56:11", "name": "[v3,26/33] system/memory: implement FDT_GENERIC_MMAP interface", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "345cd28c4febd874b14ee3cca201e4a30b53786d", "submitter": { "id": 92275, "url": "http://patchwork.ozlabs.org/api/1.0/people/92275/?format=api", "name": "Ruslan Ruslichenko", "email": "ruslichenko.r@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260402215629.745866-27-ruslichenko.r@gmail.com/mbox/", "series": [ { "id": 498555, "url": "http://patchwork.ozlabs.org/api/1.0/series/498555/?format=api", "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/2219367/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=ZnDYAFeA;\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 4fmwnS1Ftpz1yDH\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 09:02:20 +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 1w8Q3A-0000xI-8R; Thu, 02 Apr 2026 17:58:04 -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 1w8Q2e-0000BN-Vf\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:33 -0400", "from mail-ed1-x532.google.com ([2a00:1450:4864:20::532])\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 1w8Q2c-0007FL-4W\n for qemu-devel@nongnu.org; Thu, 02 Apr 2026 17:57:31 -0400", "by mail-ed1-x532.google.com with SMTP id\n 4fb4d7f45d1cf-66e07d6bba5so1939428a12.0\n for <qemu-devel@nongnu.org>; Thu, 02 Apr 2026 14:57:29 -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.26\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 02 Apr 2026 14:57:27 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775167048; x=1775771848; 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=VUnnhkK/qXiPp936orDPcoBrWF8G/ssU5VMirqtDrGI=;\n b=ZnDYAFeA/AWOv6euJNqcBkUNrwjicjQKfKe0FnLm8uWCCrsYgDPNFZezW8WFU2kIPP\n NVKUrwiHJN/27R65hDfmwPOMK5fykNf2C3j2XS1ocHVaWxrcbev9+7qkdnOSUdo6izdx\n IWsfZ2QxIhMt5QXhMbWUzjTMKCUWUFnxH8nUQ4MaK5mkbpxOh4XKCEdyyFCdTyFc+orH\n T8rxCnDxQZ0qXtD4tg07enp2QurOAakNrVPdiB53rkOTC93GI0w5ka7K+QU7Ms472VCr\n Yf7a3Glf8WNOPix5m44E1d4sshYBjHtdDAsrU0zcsOqcLxU5Xnm2Tuqwy0dxNHPC/RX4\n PGjQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775167048; x=1775771848;\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=VUnnhkK/qXiPp936orDPcoBrWF8G/ssU5VMirqtDrGI=;\n b=rdCGwrQhWHs9jPlUagF9gamVAWBbo3U18kxNScWrbUWLEnvU0xPRLKUGjxgHJDmi2A\n 1S2Kvu49q8Ux3aoZbYJR8cl+PYmmiItKXgKTdYOkvg6Q64D6CbGtmj5HXnFwcNwAnsd0\n zEQd8AZqkYEC3uiyUWp8U8tTn8CiNEtXUo3aacCSDjxB7Q3sD7nD5mmYKHQos5J5TrhA\n Nc3tWNngpAPrW5kkug4BFZg4b9iwNEPCx2tkCZwGPx3uKmZ+qTM9ZoUG4cqnUfd0kseM\n K6WrCMshnGbXrFSrYMh2xqkqv9EhEevqrg3PN3cV5jXya2IUB+BvtiKVazI4KMC/Y37O\n sCag==", "X-Gm-Message-State": "AOJu0YyMGhbVOKI7+Dd6Sg5rXnPz/K9H9p7wJD+nbbNaxAIli4/Qg9Pi\n kYoMBXuVICd9vB8jAbdTK5iTFhGD+EpWxq2XNVAVu+gKmXcGKChxl5ApdZtF9ZEs", "X-Gm-Gg": "ATEYQzwaqjTWLsUgot8s76L/WxW6AJ3Q17ejK3f5rIhYkFy4dvF/TBe1+Lp7tvIvLgs\n FwMFlnFF4iST6+i19Y2KfxT7T7an5IR3uT9jDT6EN2X6CkTyPc7UuAfjSt0gL3jcvvtOlRb9sdZ\n CYRVxEOp3wwewXGIJqX+vh/yq7ZCI8A4thKOzJMurGBHiYJJZ+RWFaxrGrdvPgzo6jN6z9RjPxq\n Oogf5JIlDFmFLPjralrHVP1JPkE8C/yD5REaJJUmk4LCMm8cbsoat01p/KMvkMRFIYZk6rynVlp\n OV59jZjnxjahqLNfUN9KFHwd58FcDuhPxJnMIjRk403Kc7uk+Wd9bMWc4+sXACovRhhHbJTqezZ\n PH9CQvRD2E260ToZogn7u/9MHnaCesKb75ksHLpMBZrB2S4RStstOgPklgX8DvoDZHDVIXA0TXA\n luj3YWCEt1WWA0B0PodFlCoVfQHsiuCrsQHSxZJFep6fCIEsV5sw575ybzvzjDLrpY1nhodA==", "X-Received": "by 2002:a17:907:8b93:b0:b9c:ed9:50c8 with SMTP id\n a640c23a62f3a-b9c67979c9cmr25722466b.26.1775167047654;\n Thu, 02 Apr 2026 14:57:27 -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 26/33] system/memory: implement FDT_GENERIC_MMAP interface", "Date": "Thu, 2 Apr 2026 23:56:11 +0200", "Message-ID": "<20260402215629.745866-27-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::532;\n envelope-from=ruslichenko.r@gmail.com; helo=mail-ed1-x532.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 implements TYPE_FDT_GENERIC_MMAP interface\nfor the MemoryRegion class.\n\nThis enables memory region objects to be automatically\nconstructed by FDT parser based on the 'reg' property\nin the Device tree. The implementation parses register\ntuples and set base address, size and priority properties.\n\nOptionally parent container can be set of newly created\nmemory region.\n\nSigned-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>\n---\n system/memory.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 58 insertions(+)", "diff": "diff --git a/system/memory.c b/system/memory.c\nindex cd463a3dde..b3d981dc0c 100644\n--- a/system/memory.c\n+++ b/system/memory.c\n@@ -38,6 +38,8 @@\n \n #include \"memory-internal.h\"\n \n+#include \"hw/core/fdt_generic_util.h\"\n+\n //#define DEBUG_UNASSIGNED\n \n static unsigned memory_region_transaction_depth;\n@@ -3721,6 +3723,57 @@ static gboolean mtree_info_flatview_free(gpointer key, gpointer value,\n return true;\n }\n \n+static bool memory_region_parse_reg(FDTGenericMMap *obj,\n+ FDTGenericRegPropInfo reg, Error **errp)\n+{\n+ MemoryRegion *mr = MEMORY_REGION(obj);\n+ uint64_t base_addr = ~0ull;\n+ uint64_t total_size = 0;\n+ uint64_t max_addr = 0;\n+ int i;\n+\n+ if (!reg.n) {\n+ return false;\n+ }\n+\n+ for (i = 0; i < reg.n; ++i) {\n+ base_addr = MIN(base_addr, reg.a[i]);\n+ max_addr = MAX(max_addr, reg.a[i] + reg.s[i]);\n+ total_size += reg.s[i];\n+ if (reg.p[i] != reg.p[0]) {\n+ error_setg(errp, \"FDT generic memory parser does not support\"\n+ \"mixed priorities\");\n+ return false;\n+ }\n+ }\n+\n+ if (total_size != max_addr - base_addr) {\n+ error_setg(errp, \"FDT generic memory parse does not \"\n+ \"spport discontiguous or overlapping memory regions\");\n+ return false;\n+ }\n+\n+ /*\n+ * FIXME: parent should not be optional but we need to implement\n+ * reg-extended in kernel before we can do things properly\n+ */\n+ if (reg.parents[0]) {\n+ object_property_set_link(OBJECT(mr), \"container\", reg.parents[0],\n+ &error_abort);\n+ }\n+ object_property_set_int(OBJECT(mr), \"size\", total_size, &error_abort);\n+ object_property_set_int(OBJECT(mr), \"addr\", base_addr, &error_abort);\n+ object_property_set_int(OBJECT(mr), \"priority\", reg.p[0], &error_abort);\n+ return false;\n+}\n+\n+static void memory_region_class_init(ObjectClass *oc, const void *data)\n+{\n+ FDTGenericMMapClass *fmc = FDT_GENERIC_MMAP_CLASS(oc);\n+\n+ fmc->parse_reg = memory_region_parse_reg;\n+}\n+\n static void mtree_info_flatview(bool dispatch_tree, bool owner)\n {\n struct FlatViewInfo fvi = {\n@@ -3941,6 +3994,11 @@ static const TypeInfo memory_region_info = {\n .instance_size = sizeof(MemoryRegion),\n .instance_init = memory_region_initfn,\n .instance_finalize = memory_region_finalize,\n+ .class_init = memory_region_class_init,\n+ .interfaces = (InterfaceInfo[]) {\n+ { TYPE_FDT_GENERIC_MMAP },\n+ { },\n+ },\n };\n \n static const TypeInfo iommu_memory_region_info = {\n", "prefixes": [ "v3", "26/33" ] }