{"id":2215682,"url":"http://patchwork.ozlabs.org/api/patches/2215682/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260325031743.371728-2-marek.vasut+renesas@mailbox.org/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260325031743.371728-2-marek.vasut+renesas@mailbox.org>","list_archive_url":null,"date":"2026-03-25T03:17:05","name":"[RFC,2/3] fdtdec: Introduce fdtdec_setup_mem_ram_top() to determine end of topmost DRAM bank","commit_ref":null,"pull_url":null,"state":"rfc","archived":false,"hash":"9533719ef82ddcd91d60c2af702ebf8c1276d057","submitter":{"id":85650,"url":"http://patchwork.ozlabs.org/api/people/85650/?format=json","name":"Marek Vasut","email":"marek.vasut+renesas@mailbox.org"},"delegate":{"id":3651,"url":"http://patchwork.ozlabs.org/api/users/3651/?format=json","username":"trini","first_name":"Tom","last_name":"Rini","email":"trini@ti.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260325031743.371728-2-marek.vasut+renesas@mailbox.org/mbox/","series":[{"id":497379,"url":"http://patchwork.ozlabs.org/api/series/497379/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=497379","date":"2026-03-25T03:17:04","name":"[RFC,1/3] fdtdec: Deduplicate iterator function","version":1,"mbox":"http://patchwork.ozlabs.org/series/497379/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2215682/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2215682/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","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 secure) header.d=mailbox.org header.i=@mailbox.org header.a=rsa-sha256\n header.s=mail20150812 header.b=Zle3Gvam;\n\tdkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org\n header.a=rsa-sha256 header.s=mail20150812 header.b=H8XsQrMH;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=mailbox.org","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n secure) header.d=mailbox.org header.i=@mailbox.org header.b=\"Zle3Gvam\";\n\tdkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org\n header.b=\"H8XsQrMH\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=mailbox.org","phobos.denx.de;\n spf=pass smtp.mailfrom=marek.vasut+renesas@mailbox.org","outgoing_mbo_mout;\n dkim=pass header.d=mailbox.org header.s=mail20150812 header.b=H8XsQrMH;\n spf=pass (outgoing_mbo_mout: domain of marek.vasut+renesas@mailbox.org\n designates 2001:67c:2050:b231:465::202 as permitted sender)\n smtp.mailfrom=marek.vasut+renesas@mailbox.org"],"Received":["from phobos.denx.de (unknown\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgXDC2lRtz1yG1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 14:18:19 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id D052783DC9;\n\tWed, 25 Mar 2026 04:18:00 +0100 (CET)","by phobos.denx.de (Postfix, from userid 109)\n id CC9EB81E18; Wed, 25 Mar 2026 04:17:56 +0100 (CET)","from mout-p-102.mailbox.org (mout-p-102.mailbox.org\n [IPv6:2001:67c:2050:0:465::102])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id D6BF8838BB\n for <u-boot@lists.denx.de>; Wed, 25 Mar 2026 04:17:54 +0100 (CET)","from smtp202.mailbox.org (smtp202.mailbox.org\n [IPv6:2001:67c:2050:b231:465::202])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4fgXCk2VWhz9skw;\n Wed, 25 Mar 2026 04:17:54 +0100 (CET)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org;\n s=mail20150812; t=1774408674;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=Q30R5+wG4ZLaMzEOGSH1x4VZiiWM3yZyNYb3CwYWU9U=;\n b=Zle3GvamyZmatHtyCdA8zqJITl0oT14YpS87DYCMXlpPjoIKAbWfbqVpCmR9Z28itpUR7m\n l0ODYk1eQSOXtdjI8/gN8dRPgz3QSi/4dVhgfZx4YDZmMMhircslWJuRIfA8SXHgsJLBJv\n FZWxsaR4M6zx9spWuA0ZhaL5HmYcASQATWW+L9nxtPA6jKMusQboXHMmlZYNRvjKbI3f+8\n cOXJAwjQwiKU767AKMmN70v3jO+f1FxFz+vO6x5WtUeXGkYMDcm24bS6lpw/gEs/zAjobj\n KDorGmNMMZNP5A542mPVhDinkWSGZRW4Z5dCFGFwO47PAP0n/ziHQoffIUlyGw==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org;\n s=mail20150812; t=1774408673;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=Q30R5+wG4ZLaMzEOGSH1x4VZiiWM3yZyNYb3CwYWU9U=;\n b=H8XsQrMHfsK7Y6eyzTcXSNp5WtEw3NN+WtXkG5QaL13kPrd8v/qxNvmHy5MpbAX6F3NeY/\n ePscTvrkXcii1nvxMwmGbT6w6ZbvQ3859kJWFC765Wx9LsGE1GHcII2G0L7WDM924VJoye\n mCTljmTFMvVbprL5SgIFjWEVO+kSkZtB1bLLQdcUPSOGf0cL9vV1sNb7fCkyuPSoGICN2D\n zaLAij8ANtovfABYZvZzTYPz7rkbmVjn9kdMkC3aSDvFYN6sAZ4F0N4/2/V9EZHL7mWTCq\n 0OOeGu+WQ967EyL8G0a+/CtTLxhk2GhiYJkSWNS64YShMsdzs5PcafRAIJ67PQ=="],"From":"Marek Vasut <marek.vasut+renesas@mailbox.org>","To":"u-boot@lists.denx.de","Cc":"Marek Vasut <marek.vasut+renesas@mailbox.org>,\n Casey Connolly <casey.connolly@linaro.org>,\n Ilias Apalodimas <ilias.apalodimas@linaro.org>,\n Nobuhiro Iwamatsu <iwamatsu@nigauri.org>,\n Raymond Mao <raymondmaoca@gmail.com>, Simon Glass <sjg@chromium.org>,\n Tom Rini <trini@konsulko.com>","Subject":"[RFC][PATCH 2/3] fdtdec: Introduce fdtdec_setup_mem_ram_top() to\n determine end of topmost DRAM bank","Date":"Wed, 25 Mar 2026 04:17:05 +0100","Message-ID":"<20260325031743.371728-2-marek.vasut+renesas@mailbox.org>","In-Reply-To":"<20260325031743.371728-1-marek.vasut+renesas@mailbox.org>","References":"<20260325031743.371728-1-marek.vasut+renesas@mailbox.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-MBO-RS-ID":"dfe040c917e4f810369","X-MBO-RS-META":"etd6c9114dwx37734uu1okmgbag4i9pg","X-Rspamd-Queue-Id":"4fgXCk2VWhz9skw","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"Introduce function fdtdec_setup_mem_ram_top(), which determines the topmost\naddress in the last DRAM bank, to be assigned into gd->ram_top in order to\nrelocate U-Boot to the actual end of all DRAM. This makes use of iterator\nfunction fdtdec_setup_mem_for_each_bank() introduced in previous commit.\n\nSigned-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>\n---\nCc: Casey Connolly <casey.connolly@linaro.org>\nCc: Ilias Apalodimas <ilias.apalodimas@linaro.org>\nCc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>\nCc: Raymond Mao <raymondmaoca@gmail.com>\nCc: Simon Glass <sjg@chromium.org>\nCc: Tom Rini <trini@konsulko.com>\nCc: u-boot@lists.denx.de\n---\n include/fdtdec.h | 16 ++++++++++++++++\n lib/fdtdec.c     | 18 ++++++++++++++++++\n 2 files changed, 34 insertions(+)","diff":"diff --git a/include/fdtdec.h b/include/fdtdec.h\nindex d9fcd037ed2..26e40c3cdb4 100644\n--- a/include/fdtdec.h\n+++ b/include/fdtdec.h\n@@ -933,6 +933,22 @@ int fdtdec_setup_mem_size_base(void);\n  */\n int fdtdec_setup_mem_size_base_lowest(void);\n \n+/**\n+ * fdtdec_setup_mem_ram_top() - decode and setup gd->ram_top to highest address\n+ * available in any memory bank\n+ *\n+ * Decode the /memory 'reg' property to determine the highest end of the memory\n+ * bank and populate the global data ram_top with it.\n+ *\n+ * This function should be called from a boards board_get_usable_ram_top().\n+ * This helper function allows for boards to query the device tree for topmost\n+ * DRAM address.\n+ *\n+ * Return: 0 if OK, -EINVAL if the /memory node or reg property is missing or\n+ * invalid\n+ */\n+int fdtdec_setup_mem_ram_top(void);\n+\n /**\n  * fdtdec_setup_memory_banksize() - decode and populate gd->bd->bi_dram\n  *\ndiff --git a/lib/fdtdec.c b/lib/fdtdec.c\nindex d820f75b031..bdb26d8fb75 100644\n--- a/lib/fdtdec.c\n+++ b/lib/fdtdec.c\n@@ -1162,6 +1162,24 @@ int fdtdec_setup_mem_size_base_lowest(void)\n \treturn fdtdec_setup_mem_for_each_bank(fdtdec_setup_mem_size_base_lowest_bankfn);\n }\n \n+static void fdtdec_setup_mem_ram_top_bankfn(struct resource *res, int bank)\n+{\n+\tif ((res->end + 1) > gd->ram_top)\n+\t\tgd->ram_top = res->end + 1;\n+}\n+\n+int fdtdec_setup_mem_ram_top(void)\n+{\n+\tphys_addr_t old_top = gd->ram_top;\n+\tint ret;\n+\n+\tret = fdtdec_setup_mem_for_each_bank(fdtdec_setup_mem_ram_top_bankfn);\n+\tif (ret)\n+\t\tgd->ram_top = old_top;\n+\n+\treturn ret;\n+}\n+\n static int uncompress_blob(const void *src, ulong sz_src, void **dstp)\n {\n #if CONFIG_IS_ENABLED(MULTI_DTB_FIT_GZIP) ||\\\n","prefixes":["RFC","2/3"]}