From nobody Sun Dec 14 13:53:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1764260811; cv=none; d=zohomail.com; s=zohoarc; b=KlKnHa1X9pyw5nSSJDwYU4e8A9/4wUFuE8JR79F2IY2bYWCHKJ7R1wvBiPGYaIklTg9GSGIfqk4SPrzNFwvvdVe+Jjte7VQ14vOv3i46BXsUlvaZSEiwFKnLOVMR1YO13UCQLYNG7ajq4Qk5HS3nPG9RvKdCmbDurnHZhgLbyVk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764260811; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZJO0ng5o5yyW9xuL/pTzoWvO4SGxMGvB+mY9Dx7HkYk=; b=S7lQuPbfFRB0S/+CU/dUacK61hG6+ibpVwCretC0M733XPzmj1hIb+nQF4TPZaIs8r9xlUXv1oLZmoEvKsuWyRW4zv60lWFaxAFZQdOZQH9ZLaTRN6vLcny2/xYz3IgF/EilxugA/xiT1cjthxxE7CLa9941q7r2zciMFWonaNk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1764260811484199.24807901591237; Thu, 27 Nov 2025 08:26:51 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1174225.1499208 (Exim 4.92) (envelope-from ) id 1vOepE-0008E6-Nf; Thu, 27 Nov 2025 16:26:32 +0000 Received: by outflank-mailman (output) from mailman id 1174225.1499208; Thu, 27 Nov 2025 16:26:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vOepE-0008DX-FH; Thu, 27 Nov 2025 16:26:32 +0000 Received: by outflank-mailman (input) for mailman id 1174225; Thu, 27 Nov 2025 16:26:30 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vOepC-0007Yx-Mz for xen-devel@lists.xenproject.org; Thu, 27 Nov 2025 16:26:30 +0000 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [2a00:1450:4864:20::52f]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d410c3db-cbad-11f0-9d18-b5c5bf9af7f9; Thu, 27 Nov 2025 17:26:29 +0100 (CET) Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-645a13e2b17so1643403a12.2 for ; Thu, 27 Nov 2025 08:26:29 -0800 (PST) Received: from fedora (user-109-243-71-38.play-internet.pl. [109.243.71.38]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b76f59e8936sm195126666b.48.2025.11.27.08.26.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 08:26:28 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d410c3db-cbad-11f0-9d18-b5c5bf9af7f9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764260789; x=1764865589; darn=lists.xenproject.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=ZJO0ng5o5yyW9xuL/pTzoWvO4SGxMGvB+mY9Dx7HkYk=; b=H9VUKhPQ6lDgf+v++pEudFoRf1DCSOkIcQRyLVxUPnOh8te8kZyaFOeMAMsJJ1wJhg XleJQf/39AgB4h8u+QbkGRiRv0jDCvn3fq7BMxRSJVfu0Dr1YA4XWs2V5cS6SBS49YXd fNK2vUQ5DWTzXJT4rVCDCQd6ZnXB7w0Ziv+/+I3E6CEWNtIajPpyAJJ4Sq/755hHp8IO pK74xXX2cpA7mkou5BXBWyZgqzKA0ieK7EHx8D6/IKqfRlvgdZ0ZoS3Rr7TsGeKEdPjL gasNeODpGYxzX6hSuE/NaHA0YYTjRsti7RAWM6ulnmW0OvWVki9DqbeT1kps1KYOvqKA aa2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764260789; x=1764865589; 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=ZJO0ng5o5yyW9xuL/pTzoWvO4SGxMGvB+mY9Dx7HkYk=; b=LZN+aZuxxK+ECF8XaU+jN7HPeCHmi8ZzEINRbyg7//koUaEBT22Gnr965/p43qcmGL szsUcpUyev6Ev1v6JS+mT0CByrVj7sBttv3VAxtmBLjSKFqoa+GKgaWocWpYnlwdDJnC qu8/RmEm1fdTHj4e3g9oJb6PE+1fjKzcXxgzlooPmNHOVXWZWthiaSp1D5sD2207hc0Q omO7BLpPMEvbGRlQKYwNDXbC7y/g/n+v9hlVghQpqcoeHiO1kjDL26Va8Pn8sI7Su9/H 2CGpcLaZRDbS8mfec2NanPIXWInV4ONDP2FrVHBipowpdU47E5v9p9tzJWKdUyaC2qeO L9IA== X-Gm-Message-State: AOJu0Yw7tjXB9WFmO2SOiaQ5PKdylL/CZwqGs3NE+K3EtpApgfI34GGF AVtpNdGzdC8jVZHCMZISG/Kakp7xAuBNhL3Nqrm4kfn0dI4izB+N4YqE+E5eLOBI X-Gm-Gg: ASbGncvVMar2Az26m7m9S6uLP9fQm5D9P6e1C1kpwI131eY1XT2Q3C/M4I+9OW4Hjxl Po9J5ADI4s6Q86SOQLg8aAtjXQL8TYD0dEk3+tfMxv2+XvmJcGAZlzix1n4QLU2RzDyKpc1xXJ5 5YJCebXrKua0XuG1EntF3pfK4V8XQdAWFkj0HT543ZwsQZFJezrholwLOlehPAaXucuPK8GlTSl onq4VEIYRw9CgIzyXvb68qpgRHrqNT/OOQq+/0idbJvkeL+2vH/rXK3O2bCYmzMrVUd08aIbJzv 7/Y8ha1wHO9XRJ5YgoQ0sxZxSZtKLuYKArDbk/LU+ybfFjKX+RmnWtWm99rHOTgyu8wIGJgXiZh jb2PFWOfRqb6PEEjFj3RIwVzzp3pEHACQCochvFl1Rxb98g2fN4u2sQPAC5RRiNDuYSnHHkMKiN aSYH1c+MZEKW8OIhe9/0uvbU5+xcOLB2vXxU81UEknDcEAo4ztUIGKHMk= X-Google-Smtp-Source: AGHT+IG8DwRwNQiY0JL/nWbRuKF7SR0T0SwN+vZAP3T0clF5BO6AzbohFKQfGCTYMk7eqB5w5UbUaw== X-Received: by 2002:a17:907:1ca8:b0:b76:4c16:6b06 with SMTP id a640c23a62f3a-b76c546d9demr1278704366b.1.1764260788814; Thu, 27 Nov 2025 08:26:28 -0800 (PST) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 2/2] xen/dom0less: move make_memory_node() to common code Date: Thu, 27 Nov 2025 17:26:16 +0100 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1764260813567019200 Content-Type: text/plain; charset="utf-8" make_memory_node() does not rely on any Arm-specific functionality and is fully reused by RISC-V, making it a good candidate to move into common code. Signed-off-by: Oleksii Kurochko Acked-by: Michal Orzel Reviewed-by: Luca Fancellu Tested-by: Luca Fancellu --- Changes in v2: - New patch --- xen/arch/arm/domain_build.c | 74 -------------------------- xen/common/device-tree/domain-build.c | 75 +++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 74 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 6d1c9583b1..986a456f17 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -646,80 +646,6 @@ static int __init fdt_property_interrupts(const struct= kernel_info *kinfo, return res; } =20 -int __init make_memory_node(const struct kernel_info *kinfo, int addrcells, - int sizecells, const struct membanks *mem) -{ - void *fdt =3D kinfo->fdt; - unsigned int i; - int res, reg_size =3D addrcells + sizecells; - int nr_cells =3D 0; - __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE]; - __be32 *cells; - - if ( mem->nr_banks =3D=3D 0 ) - return -ENOENT; - - /* find the first memory range that is reserved for device (or firmwar= e) */ - for ( i =3D 0; i < mem->nr_banks && - (mem->bank[i].type !=3D MEMBANK_DEFAULT); i++ ) - ; - - if ( i =3D=3D mem->nr_banks ) - return 0; - - dt_dprintk("Create memory node\n"); - - res =3D domain_fdt_begin_node(fdt, "memory", mem->bank[i].start); - if ( res ) - return res; - - res =3D fdt_property_string(fdt, "device_type", "memory"); - if ( res ) - return res; - - cells =3D ®[0]; - for ( ; i < mem->nr_banks; i++ ) - { - u64 start =3D mem->bank[i].start; - u64 size =3D mem->bank[i].size; - - if ( (mem->bank[i].type =3D=3D MEMBANK_STATIC_DOMAIN) || - (mem->bank[i].type =3D=3D MEMBANK_FDT_RESVMEM) ) - continue; - - nr_cells +=3D reg_size; - BUG_ON(nr_cells >=3D ARRAY_SIZE(reg)); - dt_child_set_range(&cells, addrcells, sizecells, start, size); - } - - /* - * static shared memory banks need to be listed as /memory node, so wh= en - * this function is handling the normal memory, add the banks. - */ - if ( mem =3D=3D kernel_info_get_mem_const(kinfo) ) - shm_mem_node_fill_reg_range(kinfo, reg, &nr_cells, addrcells, - sizecells); - - for ( cells =3D reg, i =3D 0; cells < reg + nr_cells; i++, cells +=3D = reg_size ) - { - uint64_t start =3D dt_read_number(cells, addrcells); - uint64_t size =3D dt_read_number(cells + addrcells, sizecells); - - dt_dprintk(" Bank %u: %#"PRIx64"->%#"PRIx64"\n", - i, start, start + size); - } - - dt_dprintk("(reg size %d, nr cells %d)\n", reg_size, nr_cells); - - res =3D fdt_property(fdt, "reg", reg, nr_cells * sizeof(*reg)); - if ( res ) - return res; - - res =3D fdt_end_node(fdt); - - return res; -} - int __init add_ext_regions(unsigned long s_gfn, unsigned long e_gfn, void *data) { diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree= /domain-build.c index 774790aab3..6708c9dd66 100644 --- a/xen/common/device-tree/domain-build.c +++ b/xen/common/device-tree/domain-build.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include =20 @@ -451,6 +452,80 @@ int __init make_chosen_node(const struct kernel_info *= kinfo) return res; } =20 +int __init make_memory_node(const struct kernel_info *kinfo, int addrcells, + int sizecells, const struct membanks *mem) +{ + void *fdt =3D kinfo->fdt; + unsigned int i; + int res, reg_size =3D addrcells + sizecells; + int nr_cells =3D 0; + __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE]; + __be32 *cells; + + if ( mem->nr_banks =3D=3D 0 ) + return -ENOENT; + + /* find the first memory range that is reserved for device (or firmwar= e) */ + for ( i =3D 0; i < mem->nr_banks && + (mem->bank[i].type !=3D MEMBANK_DEFAULT); i++ ) + ; + + if ( i =3D=3D mem->nr_banks ) + return 0; + + dt_dprintk("Create memory node\n"); + + res =3D domain_fdt_begin_node(fdt, "memory", mem->bank[i].start); + if ( res ) + return res; + + res =3D fdt_property_string(fdt, "device_type", "memory"); + if ( res ) + return res; + + cells =3D ®[0]; + for ( ; i < mem->nr_banks; i++ ) + { + u64 start =3D mem->bank[i].start; + u64 size =3D mem->bank[i].size; + + if ( (mem->bank[i].type =3D=3D MEMBANK_STATIC_DOMAIN) || + (mem->bank[i].type =3D=3D MEMBANK_FDT_RESVMEM) ) + continue; + + nr_cells +=3D reg_size; + BUG_ON(nr_cells >=3D ARRAY_SIZE(reg)); + dt_child_set_range(&cells, addrcells, sizecells, start, size); + } + + /* + * static shared memory banks need to be listed as /memory node, so wh= en + * this function is handling the normal memory, add the banks. + */ + if ( mem =3D=3D kernel_info_get_mem_const(kinfo) ) + shm_mem_node_fill_reg_range(kinfo, reg, &nr_cells, addrcells, + sizecells); + + for ( cells =3D reg, i =3D 0; cells < reg + nr_cells; i++, cells +=3D = reg_size ) + { + uint64_t start =3D dt_read_number(cells, addrcells); + uint64_t size =3D dt_read_number(cells + addrcells, sizecells); + + dt_dprintk(" Bank %u: %#"PRIx64"->%#"PRIx64"\n", + i, start, start + size); + } + + dt_dprintk("(reg size %d, nr cells %d)\n", reg_size, nr_cells); + + res =3D fdt_property(fdt, "reg", reg, nr_cells * sizeof(*reg)); + if ( res ) + return res; + + res =3D fdt_end_node(fdt); + + return res; +} + /* * Local variables: * mode: C --=20 2.52.0