From patchwork Wed Aug 20 00:40:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 54 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=1755650498; bh=o0R616c9H6p+pbY4K/Q2K81RK/+I6VSMAfQbqaHxJq4=; 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=cxElRtdpZ/erEAV2EVB4KiupKTmmRJUvBwZ9TyLYeHciipKThEujMsdbPH8RxE6VL 2LgT9jMtV4DQuPI4XkHVN51gzdcSBW/bYkF4KUe5Wdk81vFBZxOXvu1L5z8kN+Bgvb Bj8lo1+FD/Bt6UXrEfmzhYZ47jhilN1vRln5x5veOQJ55FJMhi1vkjmxd5v10UNwSP h37AOpotPIC4dMCYEdiR5Hq/5XeHMDKlIOx7EEYgEnd2aFbzW7UqCXIummEC01xQ6Z jqJMGLu09T8Fao44EUQZp8fSEqCrbAE5PnM7c5Tb3jUfz8jniemJdIywjQ5eYZlg5B 2GeiCyKEJk+1Q== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D0BC467663 for ; Tue, 19 Aug 2025 18:41:38 -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 srrja1fqWjvf for ; Tue, 19 Aug 2025 18:41:38 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755650496; bh=o0R616c9H6p+pbY4K/Q2K81RK/+I6VSMAfQbqaHxJq4=; 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=f47z7m8G55CteuG8XNaPfbP4VionCpWqn9BUAajp6sJnHXrcVrJO/yse/MmWEatCH d4gSdchcdlEUaISX5AHEQW7htgR7BnPX9ZmFFDFBeL8XCfXR3+W/dc7pJnDIG/O1gU P/CNg8YSOWRrjPBMRU0kDmKLH7bE+drWn44bITTV6/tmp2+7lD6UEwPJ9IUn+rpqEo s50NVwxHIXKETptJ534/SHMe5v7Gow/DJWRfeT5j8cZXIZea2sFtmmMo8u3ZNuLXhL aJcDVTmuF3OxbSEKTFCuW2hvuZaRwO0UXYqjBlOLVCbrqLRg2RJJp36okpHa7ALukn sfUo4S55mJANg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id EB567675C0 for ; Tue, 19 Aug 2025 18:41:36 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755650496; bh=6nAJ/0gRFNAF6IKf0Bb/AIrnMHO4T/g+qatBPpdMueA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K8vidhX+IAKQotTwZ0i0t4Co2t3pg7k012Zt94BnDBFz3rOfsANtlQTU6WHUGsGbv U0lx2dUqtN6E1XW+E2np8F+mfVGZSm0ix5IKj3muNsNcqYAbhmPkG0qBlNquds9BVG COgT142ijC1klUtC/nemHF+qFuBreKXo8kQiBeL08A1SffHtOb5802NxUBu08QzMiR DK6cQtOKaeEUFGlQFBzM/mWReiFIR4uITavA9Flgf44O6nJe12wu7c1NBL4cr/IfSK N0GwqQEwtZ48pPkJf1zLo3RYl+DLXGFRyBe9t3kvfxucHQakBs9ZmKT9o8z6WdVWpV hM3u6gA+YBQQg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 0B7FE67652; Tue, 19 Aug 2025 18:41:36 -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 a-XjitBcYpr1; Tue, 19 Aug 2025 18:41:35 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755650494; bh=8PoKXDJzyFW7Z1L0zIWvijgz0ue903afSpMQtIdyrTs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fI4j3JtNqb4zjq7RJ5YnIYH/YRKhX68kPDvfnWEK6ABkFHjCUeb5h+uTYUWe2y46h 1AjExjKtrf18WoBCkcfnXydcXYmMngL3bjSehu3TSLMohsqH0egydyZyCsd+SRKMMG E1//oxEXugcRncpgNaGiKYBGZiU5h1ifsvN736CSZkXu+wzyAv66uRK60cn7Cb/p73 TWLyPtTl6FkkawkCF+y/B7lCku8Y1k+nRacSURFs/ii1yLdSI2EcHcNEBsyctRk9w7 HRGmf25pLJQgu5GSfqgSDVtAmj0K1e8f4PEJA7KBczr5cmR7BAVeD8cr6OFHGQszTI QRvaRXlvXz3sw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 4DA216728E; Tue, 19 Aug 2025 18:41:34 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Tue, 19 Aug 2025 18:40:30 -0600 Message-ID: <20250820004039.3920254-17-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250820004039.3920254-1-sjg@u-boot.org> References: <20250820004039.3920254-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: VITRKXAYS4NFCGN7PHQ2DDHBNP4N4RF4 X-Message-ID-Hash: VITRKXAYS4NFCGN7PHQ2DDHBNP4N4RF4 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: Heinrich Schuchardt , Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 16/18] efi: Move efi_load_option_dp_join() to a common file 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 function is useful in the app so move it to the common helper. Signed-off-by: Simon Glass --- lib/efi/helper.c | 46 +++++++++++++++++++++++++++++++++++++ lib/efi_loader/efi_helper.c | 44 ----------------------------------- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/lib/efi/helper.c b/lib/efi/helper.c index 34cf3f49f95..85a2a270f20 100644 --- a/lib/efi/helper.c +++ b/lib/efi/helper.c @@ -5,6 +5,8 @@ #define LOG_CATEGORY LOGC_EFI +#include +#include #include #include @@ -40,3 +42,47 @@ bool efi_varname_is_load_option(u16 *var_name16, int *index) return false; } + +/** + * efi_load_option_dp_join() - join device-paths for load option + * + * @dp: in: binary device-path, out: joined device-path + * @dp_size: size of joined device-path + * @initrd_dp: initrd device-path or NULL + * @fdt_dp: device-tree device-path or NULL + * Return: status_code + */ +efi_status_t efi_load_option_dp_join(struct efi_device_path **dp, + size_t *dp_size, + struct efi_device_path *initrd_dp, + struct efi_device_path *fdt_dp) +{ + if (!dp) + return EFI_INVALID_PARAMETER; + + *dp_size = efi_dp_size(*dp); + + if (initrd_dp) { + struct efi_device_path *tmp_dp = *dp; + + *dp = efi_dp_concat(tmp_dp, initrd_dp, *dp_size); + efi_free_pool(tmp_dp); + if (!*dp) + return EFI_OUT_OF_RESOURCES; + *dp_size += efi_dp_size(initrd_dp) + sizeof(EFI_DP_END); + } + + if (fdt_dp) { + struct efi_device_path *tmp_dp = *dp; + + *dp = efi_dp_concat(tmp_dp, fdt_dp, *dp_size); + efi_free_pool(tmp_dp); + if (!*dp) + return EFI_OUT_OF_RESOURCES; + *dp_size += efi_dp_size(fdt_dp) + sizeof(EFI_DP_END); + } + + *dp_size += sizeof(EFI_DP_END); + + return EFI_SUCCESS; +} diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c index 56ea7d1c7d9..3030e6f52d4 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -99,50 +99,6 @@ err: return file_path; } -/** - * efi_load_option_dp_join() - join device-paths for load option - * - * @dp: in: binary device-path, out: joined device-path - * @dp_size: size of joined device-path - * @initrd_dp: initrd device-path or NULL - * @fdt_dp: device-tree device-path or NULL - * Return: status_code - */ -efi_status_t efi_load_option_dp_join(struct efi_device_path **dp, - size_t *dp_size, - struct efi_device_path *initrd_dp, - struct efi_device_path *fdt_dp) -{ - if (!dp) - return EFI_INVALID_PARAMETER; - - *dp_size = efi_dp_size(*dp); - - if (initrd_dp) { - struct efi_device_path *tmp_dp = *dp; - - *dp = efi_dp_concat(tmp_dp, initrd_dp, *dp_size); - efi_free_pool(tmp_dp); - if (!*dp) - return EFI_OUT_OF_RESOURCES; - *dp_size += efi_dp_size(initrd_dp) + sizeof(EFI_DP_END); - } - - if (fdt_dp) { - struct efi_device_path *tmp_dp = *dp; - - *dp = efi_dp_concat(tmp_dp, fdt_dp, *dp_size); - efi_free_pool(tmp_dp); - if (!*dp) - return EFI_OUT_OF_RESOURCES; - *dp_size += efi_dp_size(fdt_dp) + sizeof(EFI_DP_END); - } - - *dp_size += sizeof(EFI_DP_END); - - return EFI_SUCCESS; -} - const struct guid_to_hash_map { efi_guid_t guid; const char algo[32];