From patchwork Wed Aug 20 11:23:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 72 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=1755689068; bh=MvYubXDvIkyXGyIsHu3gxXXnY2HjrGPt024yrRQt35M=; 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=ZN8yV9Zohvg2A32LQlFjbWMe2g4DIzS0rjQvBpxOyzHJ8NFUxQrQraT1JQuXvuM/u 3MCiZvAfgERskZqy3cyccnEyTgDVbraVbnkerkq72EDWYjwRzR6rhio/GTGw8tOTay S5BXgDwnkzfECWV4Mpg+74g4DHTdKUyWQqnk2ifiJV/k7mzC+B1cPs88GIu3PImB5W jWK7ED+6+jFeRTUvxcizqBjvAHvqLX1IL+lzaPnF8vZMA++TLAm/ld8BJGFz53aZhe 6lUGdcOAngYDt4GBrA9V6HA8uYWjVrj1xerYjtsgBYwgPecPb03iWnJguOkZ6LpSm1 6MbbHBNy0cpYQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E8DDB6768D for ; Wed, 20 Aug 2025 05:24:28 -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 95H_CtEKimlE for ; Wed, 20 Aug 2025 05:24:28 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755689067; bh=MvYubXDvIkyXGyIsHu3gxXXnY2HjrGPt024yrRQt35M=; 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=gR08vPHGUp3W8T+teWTvYNSdBr3Q4vxyvstmWPpluEvd0YEUwE9viKMt8mTOSFxfA ywxzkRFsxMLd4fdYBH5Skb2HE1eZ9K3D3pmgVCv9M2BRoln04azjSSpHruc2vdcO8u 9UYmVTiZuhkD+GDdj8LMWrGDGcK7keFWsCDIjjryJtMXQKhrdVRQRIVJsnBGwKnMH8 E79nmmq3AZ6Ekge7YlMAZof5cHmSctFuhdsyYRD2yUY6zMEMJqzxHb818zLhUv3FaX FjT7iB0ENAQ0rXnREORlopc+zphu7jIh+vG8cya+FW3Qoexh2iuMrxEdZP84ndfDJq PAMsO6l/fgPyA== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 14F866748C for ; Wed, 20 Aug 2025 05:24:27 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755689064; bh=qbekrCK/e3nRpL/DHy3fnL4saeLKOzG9aBW2rJgAYqY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HMb+gnGo/2DDMTnxSwdeqlDUO+hOK7G76CAQBxCBz6Oy/XaRkowXhpEMqfTETXxBR jIrCySDMTXyBVcyXfbLmPnq+mNkxU+cX24OFgp8b26ENw61ZjFCb6CN2MePLj1Mkxt GqKZa/kTRLiIhbLya1gBbCgllfijUUGmf3A+R03jnexUMXq7YMrmd1mMErW2v76Yb2 rIl1HVpawj3jHkQANGi7kyfgEhihiYCcSx9W6nIQrWQIBTiNA7C9gcezwA45uZbtFn 6ePih8pmlErQqTOSSbzpsByttPUjivDEK33zpgEILMR6qj9iQMKyg3jP0/Ngs/P0ek a1pooI3dyBOqA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 8A7216767D; Wed, 20 Aug 2025 05:24:24 -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 xHzeLgntdHtN; Wed, 20 Aug 2025 05:24:24 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1755689058; bh=dtABPST/Rtc1kJ5M0/izlT1SdJnrLk84SAyA8Tdft0w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=phDwQO56Wboi/76PJXkduIq+8Nhb/zMjtbm6JfrYcEeiOwVrU0u+8zlghHSnpBwZ/ XtaNW6/OqBAc4xT30jCa2daZ0/W1jbdki0EISCtjMR0u8Wg/FQrcUkRdO+EuoQhlPa YIyEtb+6mm2dN0+TUZYlfuYAdT9eQN70rNEzrS29WYZXJlTnL9rLhcx2vDL2aVr0C5 AREQGCh+hkbVihJshSXe6XUZKO4cJ2Ccgt2OKAb1DxEfdUJip6KvqzilzEUe97bkNE JaXOFpGTiLUdjgBlFHgsE3egrU7FtLxziP++L3fbpuCIT/3pbvj0Ugi8P6yxm7B+Lq 9L1FmgxL4w8rw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 4759767690; Wed, 20 Aug 2025 05:24:18 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Wed, 20 Aug 2025 05:23:28 -0600 Message-ID: <20250820112340.147082-17-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250820112340.147082-1-sjg@u-boot.org> References: <20250820112340.147082-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: 43KB3OR5DS7N7UH2QSKQCIMNJ6XMDTO6 X-Message-ID-Hash: 43KB3OR5DS7N7UH2QSKQCIMNJ6XMDTO6 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 v2 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 --- (no changes since v1) 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];