Cover Letter Detail
Show a cover letter.
GET /api/covers/2217979/?format=api
{ "id": 2217979, "url": "http://patchwork.ozlabs.org/api/covers/2217979/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/cover/20260331075338.2391-1-ansuelsmth@gmail.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": "<20260331075338.2391-1-ansuelsmth@gmail.com>", "list_archive_url": null, "date": "2026-03-31T07:53:19", "name": "[v4,0/5] misc: fs_loader: reorg and split to FS and FW loader + FIP loader", "submitter": { "id": 71108, "url": "http://patchwork.ozlabs.org/api/people/71108/?format=api", "name": "Christian Marangi", "email": "ansuelsmth@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/cover/20260331075338.2391-1-ansuelsmth@gmail.com/mbox/", "series": [ { "id": 498136, "url": "http://patchwork.ozlabs.org/api/series/498136/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=498136", "date": "2026-03-31T07:53:19", "name": "misc: fs_loader: reorg and split to FS and FW loader + FIP loader", "version": 4, "mbox": "http://patchwork.ozlabs.org/series/498136/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2217979/comments/", "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=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=WczoaSbB;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.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=gmail.com header.i=@gmail.com header.b=\"WczoaSbB\";\n\tdkim-atps=neutral", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=ansuelsmth@gmail.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flL3S3mvWz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 18:53:56 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 2D94183F5B;\n\tTue, 31 Mar 2026 09:53:52 +0200 (CEST)", "by phobos.denx.de (Postfix, from userid 109)\n id 8F11983DBF; Tue, 31 Mar 2026 09:53:51 +0200 (CEST)", "from mail-wm1-x334.google.com (mail-wm1-x334.google.com\n [IPv6:2a00:1450:4864:20::334])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 37A7F83DBF\n for <u-boot@lists.denx.de>; Tue, 31 Mar 2026 09:53:49 +0200 (CEST)", "by mail-wm1-x334.google.com with SMTP id\n 5b1f17b1804b1-486b96760easo58705635e9.2\n for <u-boot@lists.denx.de>; Tue, 31 Mar 2026 00:53:49 -0700 (PDT)", "from Ansuel-XPS24 (93-34-88-122.ip49.fastwebnet.it. [93.34.88.122])\n by smtp.googlemail.com with ESMTPSA id\n 5b1f17b1804b1-4887c561750sm23889915e9.2.2026.03.31.00.53.46\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 31 Mar 2026 00:53:47 -0700 (PDT)" ], "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,FREEMAIL_FROM,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774943628; x=1775548428; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:from:to:cc:subject:date:message-id:reply-to;\n bh=PK6UpEMYRMPah6QsShwtT1bqZlzcg4BhvALhxxr1fnQ=;\n b=WczoaSbBCHDBOxZ7EswJWYjBEkpotAv9K3Vfwa5WUXiY+cA2WXjcHaHpI7RY5HXcyv\n +RjQ42xAHct2IRclCIDynnoj6JV5wChVjkrFIDBRvAof0mWabWLjTraDsBDbTmfEAYO8\n k1anjHW4knjFZXmidNzdIWSiz4yeP1RgajAJcKWYRXHFWtIFbbcoe4E1wTUyJjKdb4NQ\n fvq662ysXp3QCB+hn/bZv4KApAWHLNej98+I/xglBbSKD6aBxxIeWQ0miZzwYoXf9Nmb\n /h3uK7IO9h3AyKdgBWJJ379TCsnXh4EUP2gs8DijLRjlCNsFDyadwHSNmB8EHRg0MA7M\n heNg==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774943628; x=1775548428;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=PK6UpEMYRMPah6QsShwtT1bqZlzcg4BhvALhxxr1fnQ=;\n b=rW6tfvgoTIUbMn3LADuWuiyAHX2C5JVAG+HIeUtuJnmTidNnbDcOc7juRyM7DJt0zg\n w+qsmNU5VLwxnWkJOi3Xr2wqeWKb29UFVV2a1Eqnc40ZG5Hm9jJ1CE8BS0DQVo2M39O7\n N99ekb+2e/Wf/peayY6QRsh9uQaYrBQEkD+RsPC0tzlNXl7EsdehisHny6gwVyVTFE9p\n 4dtCqIhmnaaSOgu0iwHYyQoRxfttH6oXTMxBnqyeWbHadQqNqZBz72fTwuu+Jm7+q6Br\n y84tdmWIGCDFEhPxXpufe0//dn1YHx9P0BIvJugQKRrBFmbCGuVYMyOKaUqfGJy9mt80\n SzEg==", "X-Forwarded-Encrypted": "i=1;\n AJvYcCV2IpHGR5cMeZllwBkFm787Fdcmgfc4jjvH+0G5OIucdwj+weSZ5N8KDj6igp7FP4qT6iRxWxE=@lists.denx.de", "X-Gm-Message-State": "AOJu0Yxh1iYb0xfs2HTY9VMMmowoN+MCfNvntBuJZouKkuPahI7dQ+sM\n t7mgObX0c54SGoQPpN4q695FODlvHbVv5bY9gj7+EswIwd9C+P5ExcIP", "X-Gm-Gg": "ATEYQzyJS7oKXG0MTBue+Sv8v/6XcTV0yqJKl+K5+x3Nx2zDwduRa5aXr1Z3R5T+WEF\n 2jSUSKAjqqzyJnBM4Qxm7ZbdxfWJpTus0K6fZGubgxbVsLvHEnt+UKLErllQUjzWcouAdiSNvD+\n nX1bCvUOWEbT6jMNT8yC2oyoag4Jqw+cI7A5CQAIrENcDjPlwB15byvNgeND50568CUdRo9C3kQ\n DLDGiqef9phwukoj5SptdYKBIHhyUKK6iJ5Rd6TC7iWAdqM1QBzRi+KtMKxfbdFKe2yC5E01z4d\n dx+0qb+znJAxvaxwQggBHKt87d58BkprgK6J5Zu6I7uUlhPg30+BU+9OgDtOQFqA569pF/FMHn1\n oWz+MhWblHRsKPPXmSRcGFOn531C7qhm5YLh3UWbdiZ3/LcO948I6vDihehWdw8NOtWLfHaduoP\n BaoDG4jhyUrwulDBPDQ2gTI2+W73o+18S49php8X9WquHDbKeVymo3koU=", "X-Received": "by 2002:a05:600c:a292:b0:487:2439:b7be with SMTP id\n 5b1f17b1804b1-4873d34639fmr65849285e9.6.1774943628065;\n Tue, 31 Mar 2026 00:53:48 -0700 (PDT)", "From": "Christian Marangi <ansuelsmth@gmail.com>", "To": "Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>,\n Casey Connolly <casey.connolly@linaro.org>,\n Quentin Schulz <quentin.schulz@cherry.de>,\n Christian Marangi <ansuelsmth@gmail.com>, Peng Fan <peng.fan@nxp.com>,\n Ilias Apalodimas <ilias.apalodimas@linaro.org>,\n Chen-Yu Tsai <wens@kernel.org>,\n Jamie Gibbons <jamie.gibbons@microchip.com>,\n Neha Malcom Francis <n-francis@ti.com>,\n Justin Klaassen <justin@tidylabs.net>, Harsha Vardhan V M <h-vm@ti.com>,\n Leo Yu-Chi Liang <ycliang@andestech.com>,\n Weijie Gao <weijie.gao@mediatek.com>,\n Marek Vasut <marek.vasut+renesas@mailbox.org>,\n Alif Zakuan Yuslaimi <alif.zakuan.yuslaimi@altera.com>,\n Sky Huang <SkyLake.Huang@mediatek.com>,\n \"Lucien.Jheng\" <lucienzx159@gmail.com>, u-boot@lists.denx.de", "Subject": "[PATCH v4 0/5] misc: fs_loader: reorg and split to FS and FW loader +\n FIP loader", "Date": "Tue, 31 Mar 2026 09:53:19 +0200", "Message-ID": "<20260331075338.2391-1-ansuelsmth@gmail.com>", "X-Mailer": "git-send-email 2.53.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "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": "This series mainly rework the FS loader to permit reading firmware from\ncontainer that are not exactly a readable filesystem.\n\nOne scenario is when a firmware is shipped in a FIP container as\na generic blob with an UUID.\n\nFIP are mostly used on ARM in the context of ATF.\nIn such context U-Boot is loaded as BL31 and the PHY firmware\ncan't be stored in the FIT image for the kernel as U-Boot should\nnot depend on the presence of the kernel to correctly enable PHY\nfor Ethernet port.\n\nTo handle such case the PHY firmware is stored in FIP with a\npredictable UUID.\n\nOne example is with Airoha 8811H firmware where the FIP can\nhave a blob with UUID \"d39d2cf2-9bd0-3ca7-93e9-e71b4f9250b2\".\n(generated from command \"uuidgen -n @dns --md5 --name en8811h.bin\")\n\nWith these example DTS entry:\n\nfs_loader0: fip-loader {\n\tbootph-all;\n\tcompatible = \"u-boot,fip-loader\";\n\tphandlepart = <&mmc0 0>;\n\tpartoffset = <0x100>;\n};\n\nmdio {\n en8811: ethernet-phy@f {\n reg = <0xf>;\n firmware-name = \"d39d2cf2-9bd0-3ca7-93e9-e71b4f9250b2\";\n firmware-loader = <&fs_loader0>;\n };\n};\n\nAnd PHY driver using the get_fw_loader_from_node() and the\ncommon request_firmware_into_buf() it's possible to\nload the PHY firmware transparently by just declaring\nthe required entry in the DTS.\n\nget_fw_loader_from_node() is implemented to actual get the\nloader from DT. This was something that was already in mind\nfrom when the FS loader was implemented but then it was\nnever implemented in favor of a single loader per device.\n\nThe first patch is a minor fixup for something that probably\nwon't ever happen.\n\nThe second one is a good reworking of the FS and FW loader\nmoving the internal struct to a dedicated header. (this is\nreally to enforce what drivers should use and what\ndriver should not mess with)\n\nThen there is the request_firmware_size() new OP to get only\nthe size of the firmware. Useful for case where the firmware\nsize is not always the same and change across different version.\n(the patter might be get size -> alloc buffer -> get firmware).\n\nThen the FIP loader as a basic parser of FIP. This only\nread the FIP header, loop all the entry and search for a\nmatching UUID. If nothing is found then no firmware blob.\nVery simple implementation.\n\nThis is being CI tested on [0]\n\n[0] https://github.com/u-boot/u-boot/pull/884\n\nChanges v4:\n- Rebase on top of next\nChanges v3:\n- Add review tag where possible\n- Check blk_dread ret\n- Generalize mount_ubifs with generic_fw_loader_ubi_select\n- Fix some typo\n- Drop useless ubifs umount (nothing is mounted in FIP)\nChanges v2:\n- Better handle header include to fix compilation error\n on some devices\n- Fix typo for ubifs fix commit\n\nChristian Marangi (5):\n misc: fs_loader: fix ubifs not unmounted on dev_get_priv error\n misc: fs_loader: reorganize and split to FS and FW loader\n misc: fw_loader: implement generic get_fw_loader_from_node()\n misc: fw_loader: introduce FIP loader driver\n misc: fw_loader: implement request_firmware_size() OP\n\n drivers/misc/Kconfig | 16 +\n drivers/misc/Makefile | 2 +-\n drivers/misc/fw_loader/Makefile | 5 +\n drivers/misc/fw_loader/fip_loader.c | 576 +++++++++++++++++++++++\n drivers/misc/{ => fw_loader}/fs_loader.c | 185 +++-----\n drivers/misc/fw_loader/fw_loader.c | 207 ++++++++\n drivers/misc/fw_loader/internal.h | 64 +++\n include/dm/uclass-id.h | 3 +-\n include/fs_loader.h | 47 +-\n include/fw_loader.h | 43 ++\n 10 files changed, 974 insertions(+), 174 deletions(-)\n create mode 100644 drivers/misc/fw_loader/Makefile\n create mode 100644 drivers/misc/fw_loader/fip_loader.c\n rename drivers/misc/{ => fw_loader}/fs_loader.c (60%)\n create mode 100644 drivers/misc/fw_loader/fw_loader.c\n create mode 100644 drivers/misc/fw_loader/internal.h" }