From patchwork Tue Aug 19 18:58:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 13 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755630052; bh=1tUAUXjAD5POFYAwQNGCnrQ5x5NaDvgSWg/aFqtRLlg=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=XeyrfBkmSLX3kTd/CDSNQGamPnSlh4l4OKUwkTjNYWWkgcVZfUmwlxzjtiKAy3ikb Ip5rM+8mEoMA4bzRQD/ObrtV4NMhq5yIJN94suA5XHGPUGYfoF+fwFPl1aPL4NVcbC 3unhrouA29n/tcdpJO10GxAzTwatzuYTWYiv+QwgUJgiMy4HT3P/69DY7XCMH3cK4q YDW4OHMobsKIOC2PZyx8DUm+ZdOE6/3pEULhGjk4Ky7EufziCLs/TPpI6tCdYcdKaD NuWqvJXoioBaZqKk5RYgzAawsKvlscc2X15JoUiTmZf8roXiV8EiRlxEP6x1AwaOdq atBbnQuHd/dlA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 6F4F167600 for ; Tue, 19 Aug 2025 13:00:52 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id FLflE4xOqyQo for ; Tue, 19 Aug 2025 13:00:52 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755630052; bh=1tUAUXjAD5POFYAwQNGCnrQ5x5NaDvgSWg/aFqtRLlg=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=XeyrfBkmSLX3kTd/CDSNQGamPnSlh4l4OKUwkTjNYWWkgcVZfUmwlxzjtiKAy3ikb Ip5rM+8mEoMA4bzRQD/ObrtV4NMhq5yIJN94suA5XHGPUGYfoF+fwFPl1aPL4NVcbC 3unhrouA29n/tcdpJO10GxAzTwatzuYTWYiv+QwgUJgiMy4HT3P/69DY7XCMH3cK4q YDW4OHMobsKIOC2PZyx8DUm+ZdOE6/3pEULhGjk4Ky7EufziCLs/TPpI6tCdYcdKaD NuWqvJXoioBaZqKk5RYgzAawsKvlscc2X15JoUiTmZf8roXiV8EiRlxEP6x1AwaOdq atBbnQuHd/dlA== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 5C5D9675F8 for ; Tue, 19 Aug 2025 13:00:52 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755630050; bh=lJSPPczAe+M9sr6h28tcKUgT85TxbxRLlHRhiWhLrfw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L5C++bxHWuOVRj29p4wZ3Sba3MuAFpZkuytDpvUZLax/z439X5m2fS5APe/cajg08 n9El9elTWIgE9IY9DfTX7B5cu71oStITN2MFwQXr48Hx6+O/REQA+l8Ps9vwrF26Rk Wirr2l+EQMWx/TpktPVqVwAoTDXw+OOo5Mft9lt+wK9UUDyFkUFyx/AXhzB74EdaWA 5h3pqzOf3ZkDdPv4eF0ohemZOnOeTTxUG4XdX0t1ASzytmESjJGeB8N8Mt100DDP6m fmWleT2F/eatsvASpgXc/CUfTC//Zo9EFlmmPN2gAV+KlPtvIwn3KaqhOSWIQrI36H AcyP6MiWOe8Kg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 077E8675F8; Tue, 19 Aug 2025 13:00:50 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id LWd1VsOgiGAJ; Tue, 19 Aug 2025 13:00:49 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755630044; bh=OVNjRxc/FHllXHeLKl3xbT/L0cm18/rJ+x/y8Gs5zGk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=quIbbuaj9uKih58TAOd1T1PPv/hqrYIyGiO6D+wCVT9cMj14dU24trVq9JPSBCTEF UZOdKaJxugxJpibubBE8S7Pk4n+7fBwpNEBacKqAhALXHMVDtFCd3mtzOwt0QLClrG izBCIMWRiw4in98kbNM1Nz+iNLfn0s7U/uo1BwQpcsaIWQO7vAz8rDvSkIc3m1ru5G CTNgDJbXPWUtttMRk+cKApvrHiY/5NpcFjivzE37u/F1X+N3SpadtDwXopvfnsek59 71HfHaQP/cKfzHB32lOllfBCaeeI4KHoSUvhyVEGIRgB1HNrKJLcxbS0w2VHKo6qBc pd0HBCrihyI6w== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 611D8675DE; Tue, 19 Aug 2025 13:00:44 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Tue, 19 Aug 2025 12:58:42 -0600 Message-ID: <20250819185900.835939-12-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250819185900.835939-1-sjg@u-boot.org> References: <20250819185900.835939-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: L6OEZLLTDZVXV6TN3EBUY37IOWWTS4WL X-Message-ID-Hash: L6OEZLLTDZVXV6TN3EBUY37IOWWTS4WL X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH v2 11/22] efi: Fix up the addr_find command List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass This command was written before the lmb unification, so does not currently build. Tidy it up and enable it for the EFI app, by default. Also allow it to search any partition, not just a FAT one, since we may have the kernel on ext4 Signed-off-by: Simon Glass --- (no changes since v1) cmd/Kconfig | 3 ++- cmd/addr_find.c | 40 +++++++++++++--------------------------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index 4d564ab5ac6..b7b80cbe59f 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -129,7 +129,8 @@ config CMD_ACPI want to make hardware changes without the OS needing to be adjusted. config CMD_ADDR_FIND - bool "addr_find" + bool "addr_find" + default y if EFI_APP help This command searches for an unused region of address space sufficiently large to hold a file. If successful, it sets the diff --git a/cmd/addr_find.c b/cmd/addr_find.c index 8dcad300ad8..876c58feabd 100644 --- a/cmd/addr_find.c +++ b/cmd/addr_find.c @@ -16,19 +16,17 @@ DECLARE_GLOBAL_DATA_PTR; int do_addr_find(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - struct lmb_region *mem, *reserved; const char *filename; - struct lmb lmb; loff_t size; + ulong addr; int ret; - int i, j; if (!gd->fdt_blob) { log_err("No FDT setup\n"); return CMD_RET_FAILURE; } - if (fs_set_blk_dev(argv[1], argc >= 3 ? argv[2] : NULL, FS_TYPE_FAT)) { + if (fs_set_blk_dev(argv[1], argc >= 3 ? argv[2] : NULL, FS_TYPE_ANY)) { log_err("Can't set block device\n"); return CMD_RET_FAILURE; } @@ -49,32 +47,20 @@ int do_addr_find(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return CMD_RET_FAILURE; } - lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob); - mem = &lmb.memory; - reserved = &lmb.reserved; - - for (i = 0; i < mem->cnt; i++) { - unsigned long long start, end; + addr = lmb_alloc(size, SZ_1M); + if (!addr) { + log_err("Failed to find enough RAM for 0x%llx bytes\n", size); + return CMD_RET_FAILURE; + } - start = mem->region[i].base; - end = mem->region[i].base + mem->region[i].size - 1; - if ((start + size) > end) - continue; - for (j = 0; j < reserved->cnt; j++) { - if ((reserved->region[j].base + reserved->region[j].size) < start) - continue; - if ((start + size) > reserved->region[j].base) - start = reserved->region[j].base + reserved->region[j].size; - } - if ((start + size) <= end) { - env_set_hex("loadaddr", start); - debug("Set loadaddr to 0x%llx\n", start); - return CMD_RET_SUCCESS; - } + if (env_set_hex("loadaddr", addr)) { + log_err("Could not set loadaddr\n"); + return CMD_RET_FAILURE; } - log_err("Failed to find enough RAM for 0x%llx bytes\n", size); - return CMD_RET_FAILURE; + log_debug("Set loadaddr to %lx\n", addr); + + return CMD_RET_SUCCESS; } U_BOOT_CMD(