Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2196902/?format=api
{ "id": 2196902, "url": "http://patchwork.ozlabs.org/api/patches/2196902/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260216-feature_fwumdata-v3-6-9ecc5b10456d@bootlin.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api", "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": "<20260216-feature_fwumdata-v3-6-9ecc5b10456d@bootlin.com>", "list_archive_url": null, "date": "2026-02-16T13:35:36", "name": "[v3,6/6] tools: mkfwumdata: Remove dependency on fwu_mdata.h header", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "a0058b3f88c31fc1b83bdb2ea697a3f3c2aab09b", "submitter": { "id": 80520, "url": "http://patchwork.ozlabs.org/api/people/80520/?format=api", "name": "Kory Maincent", "email": "kory.maincent@bootlin.com" }, "delegate": { "id": 96103, "url": "http://patchwork.ozlabs.org/api/users/96103/?format=api", "username": "apalos", "first_name": "Ilias", "last_name": "Apalodimas", "email": "apalos@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260216-feature_fwumdata-v3-6-9ecc5b10456d@bootlin.com/mbox/", "series": [ { "id": 492310, "url": "http://patchwork.ozlabs.org/api/series/492310/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=492310", "date": "2026-02-16T13:35:30", "name": "Add support for fwumdata", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/492310/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2196902/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196902/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 unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256\n header.s=dkim header.b=ndZ09HTy;\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=bootlin.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de", "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=bootlin.com header.i=@bootlin.com header.b=\"ndZ09HTy\";\n\tdkim-atps=neutral", "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=bootlin.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=kory.maincent@bootlin.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 4fF3j06d7yz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 00:36:52 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 341B983B8A;\n\tMon, 16 Feb 2026 14:36:17 +0100 (CET)", "by phobos.denx.de (Postfix, from userid 109)\n id 880B783D3D; Mon, 16 Feb 2026 14:36:14 +0100 (CET)", "from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56])\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 B007C80FA1\n for <u-boot@lists.denx.de>; Mon, 16 Feb 2026 14:36:11 +0100 (CET)", "from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233])\n by smtpout-02.galae.net (Postfix) with ESMTPS id 6482A1A0FC0;\n Mon, 16 Feb 2026 13:36:11 +0000 (UTC)", "from mail.galae.net (mail.galae.net [212.83.136.155])\n by smtpout-01.galae.net (Postfix) with ESMTPS id 38012606CF;\n Mon, 16 Feb 2026 13:36:11 +0000 (UTC)", "from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)\n with ESMTPSA id C959C10369150; Mon, 16 Feb 2026 14:36:05 +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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_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=bootlin.com; s=dkim;\n t=1771248969; h=from:subject:date:message-id:to:cc:mime-version:content-type:\n content-transfer-encoding:in-reply-to:references;\n bh=9geBPiUBLTiSzqMhpeqNenvd/JjAXns6KNLYdkyyUok=;\n b=ndZ09HTycyG/tZXMpr0Fnuve+6b7BYZTjiBazlL75PUnTAsasmhGaeVRC6/Bg4Gn1nNE7W\n vRGA+b0JktQwvEdIoPib7z13EYl5mhMtkpuB3F7f3+2lUeKJ+MArYPxDeEeA8aCVzc3Iyd\n dgU4my/u8KkA9Y2NDdiDRoKbolPfmdK7g2byL03gBD/0jGQIb8TmvDAMb9JKMfLe8ILKpZ\n hKPlr6d5x1HcNsRULb1O7jEuYMOohk/g3Rs+829PLDRi6eQMf8a8ELNrDo3KLd/9GeXuNK\n mgMRJ7CzN8SDyDJGtOogHEQpLWE4wm/cGy3rtS/hPzKKy9q01EhWLIRR55bh7g==", "From": "Kory Maincent <kory.maincent@bootlin.com>", "Date": "Mon, 16 Feb 2026 14:35:36 +0100", "Subject": "[PATCH v3 6/6] tools: mkfwumdata: Remove dependency on fwu_mdata.h\n header", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260216-feature_fwumdata-v3-6-9ecc5b10456d@bootlin.com>", "References": "<20260216-feature_fwumdata-v3-0-9ecc5b10456d@bootlin.com>", "In-Reply-To": "<20260216-feature_fwumdata-v3-0-9ecc5b10456d@bootlin.com>", "To": "u-boot@lists.denx.de", "Cc": "Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Tom Rini <trini@konsulko.com>,\n Patrice Chotard <patrice.chotard@foss.st.com>,\n Paul HENRYS <paul.henrys_ext@softathome.com>,\n Sughosh Ganu <sughosh.ganu@arm.com>, Greg Malysa <malysagreg@gmail.com>,\n Arturs Artamonovs <arturs.artamonovs@analog.com>,\n Vasileios Bimpikas <vasileios.bimpikas@analog.com>,\n Utsav Agarwal <utsav.agarwal@analog.com>,\n Nathan Barrett-Morrison <nathan.morrison@timesys.com>,\n Peng Fan <peng.fan@nxp.com>, Simon Glass <sjg@chromium.org>, =?utf-8?q?Duj?=\n\t=?utf-8?q?e_Mihanovi=C4=87?= <duje@dujemihanovic.xyz>,\n Stefan Roese <stefan.roese@mailbox.org>,\n Mattijs Korpershoek <mkorpershoek@kernel.org>,\n Sumit Garg <sumit.garg@kernel.org>, Heiko Schocher <hs@nabladev.com>,\n Alif Zakuan Yuslaimi <alif.zakuan.yuslaimi@altera.com>,\n E Shattow <e@freeshell.de>, Raymond Mao <raymondmaoca@gmail.com>,\n Jan Kiszka <jan.kiszka@siemens.com>, Shiji Yang <yangshiji66@outlook.com>,\n Daniel Golle <daniel@makrotopia.org>,\n Heinrich Schuchardt <xypron.glpk@gmx.de>,\n Ilias Apalodimas <ilias.apalodimas@linaro.org>,\n Leonard Anderweit <l.anderweit@phytec.de>,\n Kory Maincent <kory.maincent@bootlin.com>, Yao Zi <me@ziyao.cc>", "X-Mailer": "b4 0.14-dev-d4707", "X-Last-TLS-Session-Version": "TLSv1.3", "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": "The dependency on fwu_mdata.h creates unnecessary configuration\nrequirements. To generate metadata V1, CONFIG_FWU_MDATA_V1 must be\nenabled, which in turn requires enabling FWU_MULTI_BANK_UPDATE,\nEFI_CAPSULE_ON_DISK, PARTITION_TYPE_GUID, and other unrelated configs.\nThis is not suitable for a simple standalone tool.\n\nAdditionally, even with the \"-v 1\" option to generate V1 metadata, the\ntool will still include the firmware store description if\nCONFIG_FWU_MDATA_V1 is not enabled. This structure should only be\npresent in metadata V2.\n\nReplace the fwu_mdata.h dependency with the new fwumdata header to make\nthe tool compatible with both V1 and V2 without requiring any defconfig\nchanges. This also uses the access helper functions from the header to\neliminate code duplication.\n\nSigned-off-by: Kory Maincent <kory.maincent@bootlin.com>\n---\n\nChange in v2:\n- Fix mdata->desc_offset value.\n---\n tools/fwumdata_src/mkfwumdata.c | 96 ++++++++---------------------------------\n 1 file changed, 17 insertions(+), 79 deletions(-)", "diff": "diff --git a/tools/fwumdata_src/mkfwumdata.c b/tools/fwumdata_src/mkfwumdata.c\nindex 8b25539fd57..b8b60473b91 100644\n--- a/tools/fwumdata_src/mkfwumdata.c\n+++ b/tools/fwumdata_src/mkfwumdata.c\n@@ -17,26 +17,7 @@\n #include <u-boot/crc.h>\n #include <uuid/uuid.h>\n \n-typedef uint8_t u8;\n-typedef int16_t s16;\n-typedef uint16_t u16;\n-typedef uint32_t u32;\n-typedef uint64_t u64;\n-\n-#undef CONFIG_FWU_NUM_BANKS\n-#undef CONFIG_FWU_NUM_IMAGES_PER_BANK\n-\n-/* This will dynamically allocate the fwu_mdata */\n-#define CONFIG_FWU_NUM_BANKS\t\t0\n-#define CONFIG_FWU_NUM_IMAGES_PER_BANK\t0\n-\n-/* version 2 supports maximum of 4 banks */\n-#define MAX_BANKS_V2\t\t\t4\n-\n-#define BANK_INVALID\t\t\t(u8)0xFF\n-#define BANK_ACCEPTED\t\t\t(u8)0xFC\n-\n-#include <fwu_mdata.h>\n+#include \"fwumdata.h\"\n \n static const char *opts_short = \"b:i:a:p:v:V:gh\";\n \n@@ -116,6 +97,7 @@ static struct fwu_mdata_object *fwu_alloc_mdata(size_t images, size_t banks,\n \t\t\t sizeof(struct fwu_image_bank_info) * banks) * images;\n \t} else {\n \t\tmobj->size = sizeof(struct fwu_mdata) +\n+\t\t\tsizeof(struct fwu_mdata_ext) +\n \t\t\tsizeof(struct fwu_fw_store_desc) +\n \t\t\t(sizeof(struct fwu_image_entry) +\n \t\t\t sizeof(struct fwu_image_bank_info) * banks) * images;\n@@ -146,50 +128,6 @@ alloc_err:\n \treturn NULL;\n }\n \n-static struct fwu_image_entry *\n-fwu_get_image(struct fwu_mdata_object *mobj, size_t idx)\n-{\n-\tsize_t offset;\n-\n-\tif (mobj->version == 1) {\n-\t\toffset = sizeof(struct fwu_mdata) +\n-\t\t\t(sizeof(struct fwu_image_entry) +\n-\t\t\t sizeof(struct fwu_image_bank_info) * mobj->banks) *\n-\t\t\tidx;\n-\t} else {\n-\t\toffset = sizeof(struct fwu_mdata) +\n-\t\t\tsizeof(struct fwu_fw_store_desc) +\n-\t\t\t(sizeof(struct fwu_image_entry) +\n-\t\t\t sizeof(struct fwu_image_bank_info) * mobj->banks) *\n-\t\t\tidx;\n-\t}\n-\n-\treturn (struct fwu_image_entry *)((char *)mobj->mdata + offset);\n-}\n-\n-static struct fwu_image_bank_info *\n-fwu_get_bank(struct fwu_mdata_object *mobj, size_t img_idx, size_t bnk_idx)\n-{\n-\tsize_t offset;\n-\n-\tif (mobj->version == 1) {\n-\t\toffset = sizeof(struct fwu_mdata) +\n-\t\t\t(sizeof(struct fwu_image_entry) +\n-\t\t\t sizeof(struct fwu_image_bank_info) * mobj->banks) *\n-\t\t\timg_idx + sizeof(struct fwu_image_entry) +\n-\t\t\tsizeof(struct fwu_image_bank_info) * bnk_idx;\n-\t} else {\n-\t\toffset = sizeof(struct fwu_mdata) +\n-\t\t\tsizeof(struct fwu_fw_store_desc) +\n-\t\t\t(sizeof(struct fwu_image_entry) +\n-\t\t\t sizeof(struct fwu_image_bank_info) * mobj->banks) *\n-\t\t\timg_idx + sizeof(struct fwu_image_entry) +\n-\t\t\tsizeof(struct fwu_image_bank_info) * bnk_idx;\n-\t}\n-\n-\treturn (struct fwu_image_bank_info *)((char *)mobj->mdata + offset);\n-}\n-\n /**\n * convert_uuid_to_guid() - convert UUID to GUID\n * @buf:\tUUID binary\n@@ -239,11 +177,13 @@ static int\n fwu_parse_fill_image_uuid(struct fwu_mdata_object *mobj,\n \t\t\t size_t idx, char *uuids)\n {\n-\tstruct fwu_image_entry *image = fwu_get_image(mobj, idx);\n \tstruct fwu_image_bank_info *bank;\n+\tstruct fwu_image_entry *image;\n \tchar *p = uuids, *uuid;\n \tint i;\n \n+\timage = fwu_get_image_entry(mobj->mdata, mobj->version,\n+\t\t\t\t mobj->banks, idx);\n \tif (!image)\n \t\treturn -ENOENT;\n \n@@ -266,7 +206,8 @@ fwu_parse_fill_image_uuid(struct fwu_mdata_object *mobj,\n \n \t/* Fill bank image-UUID */\n \tfor (i = 0; i < mobj->banks; i++) {\n-\t\tbank = fwu_get_bank(mobj, idx, i);\n+\t\tbank = fwu_get_bank_info(mobj->mdata, mobj->version,\n+\t\t\t\t\t mobj->banks, idx, i);\n \t\tif (!bank)\n \t\t\treturn -ENOENT;\n \t\tbank->accepted = 1;\n@@ -281,25 +222,22 @@ fwu_parse_fill_image_uuid(struct fwu_mdata_object *mobj,\n \treturn 0;\n }\n \n-#if defined(CONFIG_FWU_MDATA_V1)\n-static void fwu_fill_version_specific_mdata(struct fwu_mdata_object *mobj)\n-{\n-}\n-#else\n static void fwu_fill_version_specific_mdata(struct fwu_mdata_object *mobj)\n {\n \tint i;\n \tstruct fwu_fw_store_desc *fw_desc;\n-\tstruct fwu_mdata *mdata = mobj->mdata;\n+\tstruct fwu_mdata_ext *mdata_ext;\n \n-\tmdata->metadata_size = mobj->size;\n-\tmdata->desc_offset = sizeof(struct fwu_mdata);\n+\tmdata_ext = fwu_get_fw_mdata_ext(mobj->mdata);\n+\tmdata_ext->metadata_size = mobj->size;\n+\tmdata_ext->desc_offset = sizeof(struct fwu_mdata) +\n+\t\t\t\t sizeof(struct fwu_mdata_ext);\n \n \tfor (i = 0; i < MAX_BANKS_V2; i++)\n-\t\tmdata->bank_state[i] = i < mobj->banks ?\n-\t\t\tBANK_ACCEPTED : BANK_INVALID;\n+\t\tmdata_ext->bank_state[i] = i < mobj->banks ?\n+\t\t\tFWU_BANK_ACCEPTED : FWU_BANK_INVALID;\n \n-\tfw_desc = (struct fwu_fw_store_desc *)((u8 *)mdata + sizeof(*mdata));\n+\tfw_desc = fwu_get_fw_desc(mobj->mdata);\n \tfw_desc->num_banks = mobj->banks;\n \tfw_desc->num_images = mobj->images;\n \tfw_desc->img_entry_size = sizeof(struct fwu_image_entry) +\n@@ -307,7 +245,6 @@ static void fwu_fill_version_specific_mdata(struct fwu_mdata_object *mobj)\n \tfw_desc->bank_info_entry_size =\n \t\tsizeof(struct fwu_image_bank_info);\n }\n-#endif /* CONFIG_FWU_MDATA_V1 */\n \n /* Caller must ensure that @uuids[] has @mobj->images entries. */\n static int fwu_parse_fill_uuids(struct fwu_mdata_object *mobj, char *uuids[])\n@@ -320,7 +257,8 @@ static int fwu_parse_fill_uuids(struct fwu_mdata_object *mobj, char *uuids[])\n \tmdata->active_index = active_bank;\n \tmdata->previous_active_index = previous_bank;\n \n-\tfwu_fill_version_specific_mdata(mobj);\n+\tif (mdata->version == 2)\n+\t\tfwu_fill_version_specific_mdata(mobj);\n \n \tfor (i = 0; i < mobj->images; i++) {\n \t\tret = fwu_parse_fill_image_uuid(mobj, i, uuids[i]);\n", "prefixes": [ "v3", "6/6" ] }