{"id":2218886,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2218886/?format=json","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.0/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},"msgid":"<20260402001410.3736815-2-rs@ti.com>","date":"2026-04-02T00:14:05","name":"[1/6] lmb: add LMB_FDT for fdt reserved regions","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"46e8985e7b6d2df07468f5e174e000bf54c96168","submitter":{"id":88727,"url":"http://patchwork.ozlabs.org/api/1.0/people/88727/?format=json","name":"Randolph Sapp","email":"rs@ti.com"},"delegate":{"id":68728,"url":"http://patchwork.ozlabs.org/api/1.0/users/68728/?format=json","username":"xypron","first_name":"Heinrich","last_name":"Schuchardt","email":"xypron.glpk@gmx.de"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260402001410.3736815-2-rs@ti.com/mbox/","series":[{"id":498412,"url":"http://patchwork.ozlabs.org/api/1.0/series/498412/?format=json","date":"2026-04-02T00:14:04","name":"various memory related fixups","version":1,"mbox":"http://patchwork.ozlabs.org/series/498412/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2218886/checks/","tags":{},"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 (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.a=rsa-sha256\n header.s=selector1 header.b=jZNg+YLV;\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=quarantine dis=none) header.from=ti.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.b=\"jZNg+YLV\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com","phobos.denx.de; spf=pass smtp.mailfrom=rs@ti.com"],"Received":["from phobos.denx.de (phobos.denx.de\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)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmMnp3lcwz1yGH\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 11:15:42 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 9139584118;\n\tThu,  2 Apr 2026 02:14:46 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 37DC784113; Thu,  2 Apr 2026 02:14:45 +0200 (CEST)","from DM5PR21CU001.outbound.protection.outlook.com\n (mail-centralusazlp170110009.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c111::9])\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 0F86484056\n for <u-boot@lists.denx.de>; Thu,  2 Apr 2026 02:14:43 +0200 (CEST)","from SJ0PR13CA0193.namprd13.prod.outlook.com (2603:10b6:a03:2c3::18)\n by DS5PR10MB997707.namprd10.prod.outlook.com (2603:10b6:8:341::23)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Thu, 2 Apr\n 2026 00:14:40 +0000","from SJ1PEPF00001CE5.namprd03.prod.outlook.com\n (2603:10b6:a03:2c3:cafe::a5) by SJ0PR13CA0193.outlook.office365.com\n (2603:10b6:a03:2c3::18) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.16 via Frontend Transport; Thu,\n 2 Apr 2026 00:14:40 +0000","from lewvzet200.ext.ti.com (198.47.23.194) by\n SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9745.21 via Frontend Transport; Thu, 2 Apr 2026 00:14:40 +0000","from DLEE215.ent.ti.com (157.170.170.118) by lewvzet200.ext.ti.com\n (10.4.14.103) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 1 Apr\n 2026 19:14:21 -0500","from DLEE200.ent.ti.com (157.170.170.75) by DLEE215.ent.ti.com\n (157.170.170.118) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 1 Apr\n 2026 19:14:20 -0500","from lelvem-mr06.itg.ti.com (10.180.75.8) by DLEE200.ent.ti.com\n (157.170.170.75) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Wed, 1 Apr 2026 19:14:20 -0500","from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.39])\n by lelvem-mr06.itg.ti.com (8.18.1/8.18.1) with ESMTP id 6320EKsB1004385;\n Wed, 1 Apr 2026 19:14:20 -0500"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=no\n autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=ObobNvoOP8/h2mf6RZy7JEkT+L3XsLG9jGpUXwoezC+LZCemYa6lfGXxiE3avsEgPOHZQgHJOPLJrYpfCbyw1bFWQwtx0YU33yi5kMDDxMyk/w37yH7USmbzReBSuOycryebqrqa6T10Dyn4Aoq16oyYOAmgzxgfDpHic+gqKiVkX92Yj9EzqBgBJ0wcvfZwkWb0jrXNGOmuA3qc05MF0Qqfgp6LWevaCtf6DgM5KZ4VqEB8x6mZEVCD2YnsLsTmkHuD335JYfMszH2ooC8KYASlP5k0Wqft4UD9zF+jFbfFb16y7Ot/PHbJf2YMRbwQPc0v+3HB3/ZGXoxiTYW6PA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=BKOsfII2Dp+yuGfFlBUSdnfW5SXDD+u0rlaVQdix7r8=;\n b=j/P0Dy+RTQlaa/WkDNYOD9nsXJysBH03uhGSRthC3x30ALoYWng0H//+MekJNBCC6VaoFcMhHrsYsn7OXDu98S3qH4hYV3TJg+Zwzm74FmtBTVz/RYFkJzbryiU4MvImMiLdTTMkfmN/YcttLuz8V6wam39YskRwFwjYYW99XhgAEwzatvowIRckp3+P1hzHBIaXdrrizubUoAUw4YerfkJFOP6RXW+/IcyZrZkA0LWrENWBITtN8wQixE3Zwv3lK9M7GoRESQSa+XKTBCONEVavKNKzyOXcECovq0PTWDHN67ogLOlbT0c4wKjf2pzwya20viTWraUKFTO8OtgJEg==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 198.47.23.194) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=ti.com;\n dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=ti.com;\n dkim=none (message not signed); arc=none (0)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=BKOsfII2Dp+yuGfFlBUSdnfW5SXDD+u0rlaVQdix7r8=;\n b=jZNg+YLVuRIVIXP+BvvYVGKkeHshzRpu+jY+12Mi7JtlRvgrBNrQ44NvE41fMg2E3oWuZzDMF+5QA3iyZw0Oy2U3yhmXsQPNyoqbsImMG/bMq2pj7ZlqoPg3NtX1UXiCWx3wlLd7xiCiQjBQLpE2jPbitGmHEIp/HyvPil2HGTE=","X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 198.47.23.194)\n smtp.mailfrom=ti.com; dkim=none (message not signed) header.d=none;\n dmarc=pass\n action=none header.from=ti.com;","Received-SPF":"Pass (protection.outlook.com: domain of ti.com designates\n 198.47.23.194 as permitted sender) receiver=protection.outlook.com;\n client-ip=198.47.23.194; helo=lewvzet200.ext.ti.com; pr=C","From":"<rs@ti.com>","To":"<robertcnelson@gmail.com>, <ayush@beagleboard.org>,\n <Erik.Welsh@octavosystems.com>, <anshuld@ti.com>, <bb@ti.com>,\n <trini@konsulko.com>, <afd@ti.com>, <xypron.glpk@gmx.de>,\n <ilias.apalodimas@linaro.org>","CC":"<u-boot@lists.denx.de>","Subject":"[PATCH 1/6] lmb: add LMB_FDT for fdt reserved regions","Date":"Wed, 1 Apr 2026 19:14:05 -0500","Message-ID":"<20260402001410.3736815-2-rs@ti.com>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260402001410.3736815-1-rs@ti.com>","References":"<20260402001410.3736815-1-rs@ti.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-C2ProcessedOrg":"333ef613-75bf-4e12-a4b1-8e3623f5dcea","X-EOPAttributedMessage":"0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"SJ1PEPF00001CE5:EE_|DS5PR10MB997707:EE_","X-MS-Office365-Filtering-Correlation-Id":"dfcdcb49-dc40-456b-35e2-08de904cd567","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|82310400026|1800799024|36860700016|376014|22082099003|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n bMW+QtgMiHRmYn1lDvpLEc4jmfa4cRUMptRWt8iclJIBDnDn1TwAWBof8r/h3m6a06JiWNQ3thHnbuXK4Hsk6KmUaX+yGYWuvSfleQ7N4RLRzZsGt6mciGa0H2PmEuy3zI7vRwmGoKEi4qGCv+xvLPFdjCpzX+3gQ+xZoio6HC18ZO/Q7/RwnVGU283Vn2jWPMbc8SOu4hYA6QJqAyUtSV3qeV8suYiwYo8YS8dX/rczZWpxJzDld2FkmPdmO1pIBEylUTEied+hQnRYUTSONMBu8UpXdqqG9IDhQJOWkSpJgnCWU4tQvDYMNdIeHD4GLjWFO5Teurg0vr4MStynY1GH5qJhb4OIYz+tynEzVpQJFe1sj4EdFQlntX7OxqV6vnGm8O/KRMSysVMyr2dYchhO9Bh2MqWqYx4LmEOHw0AJxBI2ZXBoBn6RgeY2lg0ZvF5kCIS18b4HutSGDxCN0WgU6plihx67yUptWMBw4Xw8fhXPR2pzbpA9Bin6pfk+wDT/IP9d4sPqH/EETlfJkQHnmpAlwn1PYtHZGhMoWBgInKyHLeswrr4GEqLrirVus5w6b+/5sVDJtoVuwnKCF1iTCWpwHg0zFrii6C2a3bSburFD6pZr7+uKh1GDsmMeJwgtzE8BhNi4wY7MifsEXslCJLE+lMTGslsYir14/bRFqaqF9BL+Z4LkKqp0b+mAr12o3rbD5qZE+8ytoYs7QMngH16aZ8ndi4/U7onZMCMVLZv7L97rFQ+eQ8cF1LM7W6KZ9wY+rZVdCeWMJh3tmQ==","X-Forefront-Antispam-Report":"CIP:198.47.23.194; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:lewvzet200.ext.ti.com; PTR:InfoDomainNonexistent;\n CAT:NONE;\n SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(22082099003)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n qm+yCNLmE1SU74dpQVh8XgNCn0/ZY0A94jkkm9j9HmW5Hph7kiYu9cHZxT8W52F0yKieoFlWaaZe7XoaDJ0og7FlD2zdzBj25s7yW1sknbjjBIJpwKo3p+MdQ4t80W82DQdEW1m9BMv7VOk436LygifP3kswPl4+gyUNzzMUAROhclAdgpVJPmzLZUe0YBveDOlRRSy3C+fDFTtRk7BE8WaF6ysKBuKHEcRWufnrmbn6mWZgghfEnEtyg+xcsDSDd2Anddlu4JdtYTfKlVfvI1B4aDWW11YWOoZqmRqkr6eI5Gfb5f8ZuU/9fqQXwVcD15yDzmIttiOIGyywcwuAVnFF99ZIRq2zi9e5g1Fuej4/L4npKJWlfiQ8fkEX9iTy41vtX3RLqsfPrKryrFtN0xY2UFtJTWzpD4yNMoInAUdRcMxk2IrMSJQdLJdJbb70","X-OriginatorOrg":"ti.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"02 Apr 2026 00:14:40.4101 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n dfcdcb49-dc40-456b-35e2-08de904cd567","X-MS-Exchange-CrossTenant-Id":"e5b49634-450b-4709-8abb-1e2b19b982b7","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=e5b49634-450b-4709-8abb-1e2b19b982b7; Ip=[198.47.23.194];\n Helo=[lewvzet200.ext.ti.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n SJ1PEPF00001CE5.namprd03.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DS5PR10MB997707","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":"From: Randolph Sapp <rs@ti.com>\n\nAdd an LMB_FDT bit for fdt reserved regions, so we can reclaim them when\nparsing a new device tree and properly warn people when a reservation\noverlaps with an existing allocation.\n\nIf we don't at least warn the user of these reservation failures,\nthere's a chance that this region could be freed and reallocated for\nsomething important later.\n\nThis useful warning mechanism was broken in:\n5a6aa7d5913 (\"boot: fdt: Handle already reserved memory in boot_fdt_reserve_region()\")\n\nSigned-off-by: Randolph Sapp <rs@ti.com>\n---\n boot/image-fdt.c |  5 ++++-\n include/lmb.h    |  7 +++++++\n lib/lmb.c        | 23 +++++++++++++++++++++++\n 3 files changed, 34 insertions(+), 1 deletion(-)","diff":"diff --git a/boot/image-fdt.c b/boot/image-fdt.c\nindex a3a4fb8b558..0f5857f24d2 100644\n--- a/boot/image-fdt.c\n+++ b/boot/image-fdt.c\n@@ -73,6 +73,7 @@ static void boot_fdt_reserve_region(u64 addr, u64 size, u32 flags)\n {\n \tlong ret;\n \tphys_addr_t rsv_addr;\n+\tflags |= LMB_FDT;\n \n \trsv_addr = (phys_addr_t)addr;\n \tret = lmb_alloc_mem(LMB_MEM_ALLOC_ADDR, 0, &rsv_addr, size, flags);\n@@ -80,7 +81,7 @@ static void boot_fdt_reserve_region(u64 addr, u64 size, u32 flags)\n \t\tdebug(\"   reserving fdt memory region: addr=%llx size=%llx flags=%x\\n\",\n \t\t      (unsigned long long)addr,\n \t\t      (unsigned long long)size, flags);\n-\t} else if (ret != -EEXIST && ret != -EINVAL) {\n+\t} else if (ret != -EINVAL) {\n \t\tputs(\"ERROR: reserving fdt memory region failed \");\n \t\tprintf(\"(addr=%llx size=%llx flags=%x)\\n\",\n \t\t       (unsigned long long)addr,\n@@ -108,6 +109,8 @@ void boot_fdt_add_mem_rsv_regions(void *fdt_blob)\n \tif (fdt_check_header(fdt_blob) != 0)\n \t\treturn;\n \n+\tlmb_free_fdt_regions();\n+\n \t/* process memreserve sections */\n \ttotal = fdt_num_mem_rsv(fdt_blob);\n \tfor (i = 0; i < total; i++) {\ndiff --git a/include/lmb.h b/include/lmb.h\nindex 5d5f037ccb9..1b59a63f61d 100644\n--- a/include/lmb.h\n+++ b/include/lmb.h\n@@ -25,11 +25,13 @@\n  * %LMB_NOMAP: Don't add to MMU configuration\n  * %LMB_NOOVERWRITE: The memory region cannot be overwritten/re-reserved\n  * %LMB_NONOTIFY: Do not notify other modules of changes to this memory region\n+ * %LMB_FDT: A FDT reserved region that can be reclaimed if the FDT changes\n  */\n #define LMB_NONE 0\n #define LMB_NOMAP BIT(1)\n #define LMB_NOOVERWRITE BIT(2)\n #define LMB_NONOTIFY BIT(3)\n+#define LMB_FDT BIT(4)\n \n /**\n  * enum lmb_mem_type - type of memory allocation request\n@@ -215,6 +217,11 @@ phys_addr_t io_lmb_alloc(struct lmb *io_lmb, phys_size_t size, ulong align);\n  */\n long io_lmb_free(struct lmb *io_lmb, phys_addr_t base, phys_size_t size);\n \n+/**\n+ * lmb_free_fdt_regions() - Reclaim all LMB_FDT tagged reserved regions\n+ */\n+void lmb_free_fdt_regions(void);\n+\n #endif /* __KERNEL__ */\n \n #endif /* _LINUX_LMB_H */\ndiff --git a/lib/lmb.c b/lib/lmb.c\nindex e2d9fe86c14..542bb11dcf5 100644\n--- a/lib/lmb.c\n+++ b/lib/lmb.c\n@@ -669,6 +669,29 @@ long lmb_free(phys_addr_t base, phys_size_t size, u32 flags)\n \treturn lmb_map_update_notify(base, size, LMB_MAP_OP_FREE, flags);\n }\n \n+void lmb_free_fdt_regions(void)\n+{\n+\tstruct alist *lmb_rgn_lst = &lmb.used_mem;\n+\tstruct lmb_region *rgn = lmb_rgn_lst->data;\n+\tlong ret;\n+\n+\tfor (int i = 0; i < lmb_rgn_lst->count; i++) {\n+\t\tphys_addr_t base = rgn[i].base;\n+\t\tphys_size_t size = rgn[i].size;\n+\t\tu32 flags = rgn[i].flags;\n+\n+\t\tif (flags & LMB_FDT) {\n+\t\t\tret = lmb_free(base, size, flags);\n+\t\t\tif (ret < 0) {\n+\t\t\t\tprintf(\"Unable to free FDT memory at 0x%08lx\",\n+\t\t\t\t       (ulong)base);\n+\t\t\t\tcontinue;\n+\t\t\t}\n+\t\t\ti--;\n+\t\t}\n+\t}\n+}\n+\n static int _lmb_alloc_base(phys_size_t size, ulong align,\n \t\t\t   phys_addr_t *addr, u32 flags)\n {\n","prefixes":["1/6"]}