From nobody Sat Feb 7 09:04:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1770321734; cv=none; d=zohomail.com; s=zohoarc; b=FE4FZT5i1Wjp2DbaQMMQQpjKclcmZR4hDZSN5bG//Ju/+K/mo69Q5nuea/VjRJeLJvvBQJQW7YNNisBASGudr+tBYymgfkefmfC4ID6qyNKX+WiFXmvNMep35HdpFfvx3PZm8qwdRtZST/iVG3Vu3Ay1+DagS8IeghLz9DETocY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770321734; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MbMkUUvH+NcjHWVg6Bu6jsxDREeMbXx3rIs90lyP6Y4=; b=PwtWF7b4gxfR2rboncEwAImxmIdhdJIILRdGa2pCVoUtFACgUhL9iU+zZxkuIs3MQAFiwvvSGzkr785KFs4uhgEQMTx05EK7LrzqrJPfK0WIzr1bSNj8hzlfOx9eCZkoIB7Ro41DTgWiDFSNe8iFLa5tUYSw+VrYjhelrhLQNmI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770321734179776.6913546811375; Thu, 5 Feb 2026 12:02:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vo5Vn-00079U-2w; Thu, 05 Feb 2026 14:59:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vo5Ve-0006zE-TD for qemu-devel@nongnu.org; Thu, 05 Feb 2026 14:59:27 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vo5Vb-0003BO-GJ for qemu-devel@nongnu.org; Thu, 05 Feb 2026 14:59:26 -0500 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-43622089851so922338f8f.3 for ; Thu, 05 Feb 2026 11:59:23 -0800 (PST) Received: from thinkpad-t470s.. ([93.140.16.93]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-436297450b4sm514079f8f.34.2026.02.05.11.59.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Feb 2026 11:59:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770321562; x=1770926362; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MbMkUUvH+NcjHWVg6Bu6jsxDREeMbXx3rIs90lyP6Y4=; b=PNLfoQMdXD8q2jiwlOX+6m7mXRMFiSHHzBUng+b6fBsFPptoFpE/a4AYJQGh1A8h5A DUAz7bgLY1ftpsdtoWgMNRzezl4cZUgGY8/ZqQDbwwZ9oXweApNd5ttC2k2X8I6WSXsC EKTGpS3KmUtYlC2LnUojezgj37A89DiKN6PcB1dUPVwVGOMCDE8Mt7YgnGB8CnFSdB5i enceppkZdNYUo53cMV+8bQueNgEVMtQvZ7f1/aDtjIh6qkef4L8/WAXTfsGe1Tg2VB2y B9Y09ksDcgRgHK6BeRgMHb1OxT2OriEGNgmTDFbS4Jrsyai3zTpWaDXPBw6NWvyPbE0V RxZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770321562; x=1770926362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MbMkUUvH+NcjHWVg6Bu6jsxDREeMbXx3rIs90lyP6Y4=; b=qasf8MZjMSZJ9kIFArAZSsvOrqCwxvCoIy6Dd4PP9I88+/9xyp5VB16qVFu+4Dl9rf kMnLpcz4Jx9IOMb6i8Yt4HptHNIWZPOf9DMXFtZ7kO7ioWApnGG8dahh+FN3g97y9lTx n21R53dpZniukB4pxNH6duutZtvEcLHuf3bFjXWVFmILFVJBlafWuhDJOGcF9ExWdtGb pSzqQBTVq2axZDSSHp+iQ/idWTjZZOeULjrBxzR3GewqwvM553fssr0QripR+fJvSXh4 DoNdGqagsazCmkxGXcCwYY45O7zrN0ElS0n+fY/Azs7NuTTiR7BcRwvT9Ectd6WJL6Nf FAcg== X-Gm-Message-State: AOJu0YxOsUQ8SkyB6FRgzuNovVZLOhpftLeD2yjPZdg2tVtDNiuM4RhC Nbvh/ZP+cbDMXHiCkOd9oOipxrXd5qwFMmIHOc73Sp91aOnkuVUMkumUM1mKqdfRd6U= X-Gm-Gg: AZuq6aJH+r5PS8ivQDIvfWBUJcFIH54+Wws/VmKaaUf9Vuy1QtgYuSJJPiYOLvnpmSt IbYKb/S748r8BQugY/IWflq+uzciy71jqLMvGEZDKioqrnGr0Ktv0xdSVZ+YXaqFL5RmwjDH037 WxNuQSN9G+YduYRo5S45OOQkxYrUyfXY/AAEWYWzCB1CInCYrI3EwL6hYdPUytPODtXi/KXLRc8 Wn0PyMsIFcB6OyElLr7Al/zTxxc1oyNuPBUY9gB/oVsx/UttUlkkEFVzv2kERYH6cfwZJh07cyM rldsnlVmZxeAndAUDPDXsrO7zxRh6Wvfg4VKwx87qoxevzOgv73nFslh5EA4JIt7Y5IopBPaH2q bBrCYgzhsQR5zOpOcnWeMnsfNDS+4Yz6xPYknX0u2/Ok2qpIQNXAJkLaoOnV8UGYRalsMkyJu4X 0n9mE/wxxoWhtQW4TcFQA= X-Received: by 2002:a05:6000:2c05:b0:435:95c9:6891 with SMTP id ffacd0b85a97d-4362938aee7mr762694f8f.42.1770321561485; Thu, 05 Feb 2026 11:59:21 -0800 (PST) From: Ruslan Ruslichenko To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, peter.maydell@linaro.org, artem_mygaiev@epam.com, volodymyr_babchuk@epam.com, takahiro.nakata.wr@renesas.com, "Edgar E . Iglesias" , francisco.iglesias@amd.com, Ruslan_Ruslichenko@epam.com, "Edgar E . Iglesias" Subject: [PATCH 25/29] hw/core: Add FDT support to Remote Port memory master Date: Thu, 5 Feb 2026 20:58:20 +0100 Message-ID: <20260205195824.2610192-26-ruslichenko.r@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260205195824.2610192-1-ruslichenko.r@gmail.com> References: <20260205195824.2610192-1-ruslichenko.r@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=ruslichenko.r@gmail.com; helo=mail-wr1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1770321735800158500 Content-Type: text/plain; charset="utf-8" From: Ruslan Ruslichenko Implement the FDTGenericMMap interface for the Remote Port Memory Master. This enables the device to dynamically parse memory ranges defined in the Device Tree ('reg' property) and register them as system bus MMIO regions. Signed-off-by: Edgar E. Iglesias Signed-off-by: Takahiro Nakata Signed-off-by: Ruslan Ruslichenko --- hw/core/remote-port-memory-master.c | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/hw/core/remote-port-memory-master.c b/hw/core/remote-port-memo= ry-master.c index 4a6c43423d..854b35e99f 100644 --- a/hw/core/remote-port-memory-master.c +++ b/hw/core/remote-port-memory-master.c @@ -22,6 +22,8 @@ #include "hw/core/remote-port.h" #include "hw/core/remote-port-memory-master.h" =20 +#include "hw/core/fdt_generic_util.h" + #ifndef REMOTE_PORT_ERR_DEBUG #define REMOTE_PORT_DEBUG_LEVEL 0 #else @@ -277,6 +279,35 @@ static void rp_memory_master_init(Object *obj) OBJ_PROP_LINK_STRONG); } =20 +static bool rp_parse_reg(FDTGenericMMap *obj, FDTGenericRegPropInfo reg, + Error **errp) +{ + RemotePortMemoryMaster *s =3D REMOTE_PORT_MEMORY_MASTER(obj); + FDTGenericMMapClass *parent_fmc =3D + FDT_GENERIC_MMAP_CLASS(REMOTE_PORT_MEMORY_MASTER_PARENT_CLASS); + int i; + + /* Initialize rp_ops from template. */ + s->rp_ops =3D g_malloc(sizeof *s->rp_ops); + memcpy(s->rp_ops, &rp_ops_template, sizeof *s->rp_ops); + s->rp_ops->valid.max_access_size =3D s->max_access_size; + s->rp_ops->impl.max_access_size =3D s->max_access_size; + + s->mmaps =3D g_new0(typeof(*s->mmaps), reg.n); + for (i =3D 0; i < reg.n; ++i) { + char *name =3D g_strdup_printf("rp-%d", i); + + s->mmaps[i].offset =3D reg.a[i]; + memory_region_init_io(&s->mmaps[i].iomem, OBJECT(obj), s->rp_ops, + &s->mmaps[i], name, reg.s[i]); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmaps[i].iomem); + s->mmaps[i].parent =3D s; + g_free(name); + } + + return parent_fmc ? parent_fmc->parse_reg(obj, reg, errp) : false; +} + static Property rp_properties[] =3D { DEFINE_PROP_UINT32("map-num", RemotePortMemoryMaster, map_num, 0), DEFINE_PROP_UINT64("map-offset", RemotePortMemoryMaster, map_offset, 0= ), @@ -289,9 +320,11 @@ static Property rp_properties[] =3D { =20 static void rp_memory_master_class_init(ObjectClass *oc, const void *data) { + FDTGenericMMapClass *fmc =3D FDT_GENERIC_MMAP_CLASS(oc); DeviceClass *dc =3D DEVICE_CLASS(oc); device_class_set_props_n(dc, rp_properties, ARRAY_SIZE(rp_properties)); dc->realize =3D rp_memory_master_realize; + fmc->parse_reg =3D rp_parse_reg; } =20 static const TypeInfo rp_info =3D { @@ -301,6 +334,7 @@ static const TypeInfo rp_info =3D { .instance_init =3D rp_memory_master_init, .class_init =3D rp_memory_master_class_init, .interfaces =3D (InterfaceInfo[]) { + { TYPE_FDT_GENERIC_MMAP }, { TYPE_REMOTE_PORT_DEVICE }, { }, }, --=20 2.43.0