From: Christian Marangi <ansuelsmth@gmail.com>
To: Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>,
Mattijs Korpershoek <mkorpershoek@kernel.org>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Heiko Schocher <hs@nabladev.com>,
Alexey Charkov <alchark@flipper.net>,
Rasmus Villemoes <ravi@prevas.dk>,
"Lucien.Jheng" <lucienzx159@gmail.com>,
"Markus Schneider-Pargmann (TI.com)" <msp@baylibre.com>,
Christian Marangi <ansuelsmth@gmail.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Daniel Golle <daniel@makrotopia.org>,
Mehmet Fide <mehmet.fide@screeningeagle.com>,
Casey Connolly <casey.connolly@linaro.org>,
Michal Simek <michal.simek@amd.com>,
Aristo Chen <aristo.chen@canonical.com>,
Quentin Schulz <quentin.schulz@cherry.de>,
Johan Jonker <jbx6244@gmail.com>, Anshul Dalal <anshuld@ti.com>,
Marcello Sylvester Bauer <marcello.bauer@9elements.com>,
Mateus Lima Alves <mateuslima.ti@gmail.com>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Neha Malcom Francis <n-francis@ti.com>, Yao Zi <me@ziyao.cc>,
Peng Fan <peng.fan@nxp.com>, Martin Schwan <m.schwan@phytec.de>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
u-boot@lists.u-boot-project.org
Subject: [PATCH v11 8/8] test: dm: Add test for FW Loader feature
Date: Tue, 27 Oct 2026 13:39:03 +0100 [thread overview]
Message-ID: <20261027123905.839-9-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20261027123905.839-1-ansuelsmth@gmail.com>
Add basic test for FW Loader feature for the Filesystem way and FIP.
Additional MMC testing image are added that loads a dummy firmware.bin in
a fat partition or a simple FIP blob.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
arch/sandbox/dts/test.dts | 38 +++++
configs/sandbox64_defconfig | 2 +
configs/sandbox_defconfig | 2 +
configs/sandbox_flattree_defconfig | 2 +
configs/sandbox_noinst_defconfig | 2 +
configs/sandbox_spl_defconfig | 4 +
configs/sandbox_vpl_defconfig | 4 +
test/dm/Makefile | 1 +
test/dm/fw_loader.c | 254 +++++++++++++++++++++++++++++
test/py/tests/test_ut.py | 58 +++++++
10 files changed, 367 insertions(+)
create mode 100644 test/dm/fw_loader.c
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 25c99ef81472..772d8dd548bc 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -189,6 +189,18 @@
};
};
+ fs_loader: fs-loader {
+ bootph-all;
+ compatible = "u-boot,fs-loader";
+ phandlepart = <&mmc12 1>;
+ };
+
+ fip_loader: fip-loader {
+ bootph-all;
+ compatible = "u-boot,fip-loader";
+ phandlepart = <&mmc13 1>;
+ };
+
cedit: cedit {
};
@@ -1398,6 +1410,20 @@
filename = "mmc11.img";
};
+ /* This is used for FS Loader tests */
+ mmc12: mmc12 {
+ status = "disabled";
+ compatible = "sandbox,mmc";
+ filename = "mmc12.img";
+ };
+
+ /* This is used for FIP Loader tests */
+ mmc13: mmc13 {
+ status = "disabled";
+ compatible = "sandbox,mmc";
+ filename = "mmc13.img";
+ };
+
pch {
compatible = "sandbox,pch";
};
@@ -2143,6 +2169,18 @@
ethphy1: ethernet-phy@1 {
reg = <1>;
};
+
+ ethernet-phy@2 {
+ reg = <2>;
+
+ firmware-loader = <&fs_loader>;
+ };
+
+ ethernet-phy@3 {
+ reg = <3>;
+
+ firmware-loader = <&fip_loader>;
+ };
};
pm-bus-test {
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index 59e08d03f776..51f8adf36e5b 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -175,6 +175,8 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_I2C_EEPROM=y
+CONFIG_FIP_LOADER=y
+CONFIG_FS_LOADER=y
CONFIG_MMC_SANDBOX=y
CONFIG_DM_MTD=y
CONFIG_MTD_RAW_NAND=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index f307972a762d..4683f11300b9 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -259,6 +259,8 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_I2C_EEPROM=y
+CONFIG_FIP_LOADER=y
+CONFIG_FS_LOADER=y
CONFIG_MMC_PCI=y
CONFIG_MMC_SANDBOX=y
CONFIG_MMC_SDHCI=y
diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
index 57f915d4ba9a..61fa3b8f7036 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -139,6 +139,8 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_I2C_EEPROM=y
+CONFIG_FIP_LOADER=y
+CONFIG_FS_LOADER=y
CONFIG_MMC_SANDBOX=y
CONFIG_SPI_FLASH_SANDBOX=y
CONFIG_BOOTDEV_SPI_FLASH=y
diff --git a/configs/sandbox_noinst_defconfig b/configs/sandbox_noinst_defconfig
index 7a7550127956..326541413ae5 100644
--- a/configs/sandbox_noinst_defconfig
+++ b/configs/sandbox_noinst_defconfig
@@ -174,7 +174,9 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_SPL_PWRSEQ=y
+CONFIG_FIP_LOADER=y
CONFIG_FS_LOADER=y
+CONFIG_SPL_FIP_LOADER=y
CONFIG_SPL_FS_LOADER=y
CONFIG_MMC_SANDBOX=y
CONFIG_DM_MTD=y
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index 60b497f48886..32ed5150093d 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -154,6 +154,10 @@ CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_SPL_PWRSEQ=y
CONFIG_I2C_EEPROM=y
+CONFIG_FIP_LOADER=y
+CONFIG_FS_LOADER=y
+CONFIG_SPL_FIP_LOADER=y
+CONFIG_SPL_FS_LOADER=y
CONFIG_MMC_SANDBOX=y
CONFIG_SPI_FLASH_SANDBOX=y
CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/sandbox_vpl_defconfig b/configs/sandbox_vpl_defconfig
index c85bfbfb3b15..b1f2a084ce0f 100644
--- a/configs/sandbox_vpl_defconfig
+++ b/configs/sandbox_vpl_defconfig
@@ -161,6 +161,10 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_SPL_PWRSEQ=y
+CONFIG_FIP_LOADER=y
+CONFIG_FS_LOADER=y
+CONFIG_SPL_FIP_LOADER=y
+CONFIG_SPL_FS_LOADER=y
CONFIG_MMC_SANDBOX=y
CONFIG_SPI_FLASH_SANDBOX=y
CONFIG_SPI_FLASH_ATMEL=y
diff --git a/test/dm/Makefile b/test/dm/Makefile
index 5dd6b57bbe84..2f095ceedd8c 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -59,6 +59,7 @@ obj-$(CONFIG_EXTCON) += extcon.o
ifneq ($(CONFIG_EFI_PARTITION),)
obj-$(CONFIG_FASTBOOT_FLASH_MMC) += fastboot.o
endif
+obj-$(CONFIG_FW_LOADER_UCLASS) += fw_loader.o
obj-$(CONFIG_FIRMWARE) += firmware.o
obj-$(CONFIG_DM_FPGA) += fpga.o
obj-$(CONFIG_FWU_MDATA_GPT_BLK) += fwu_mdata.o
diff --git a/test/dm/fw_loader.c b/test/dm/fw_loader.c
new file mode 100644
index 000000000000..aeddd4b652b0
--- /dev/null
+++ b/test/dm/fw_loader.c
@@ -0,0 +1,254 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <dm.h>
+#include <dm/device.h>
+#include <dm/lists.h>
+#include <dm/test.h>
+#include <fw_loader.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+/* uuidgen -n @dns --md5 --name test = 45a113ac-c7f2-30b0-90a5-a399ab912716*/
+#define TEST_UUID "45a113ac-c7f2-30b0-90a5-a399ab912716"
+#define TEST_INVAL_UUID "300b74d6-cc34-4e68-ba5d-733157f633f7"
+
+static int bind_mmc(struct unit_test_state *uts, const char *mmc)
+{
+ struct udevice *dev;
+ ofnode root, node;
+
+ /* Enable the mmc node for this test */
+ root = oftree_root(oftree_default());
+ node = ofnode_find_subnode(root, mmc);
+ ut_assert(ofnode_valid(node));
+ ut_assertok(lists_bind_fdt(gd->dm_root, node, &dev, NULL, false));
+
+ return 0;
+}
+
+static int fw_loader_get_dev(struct unit_test_state *uts,
+ const char *name, struct udevice **devp)
+{
+ struct udevice *mdio_dev;
+ ofnode mdio_node, phy_node;
+
+ ut_assertok(uclass_get_device_by_name(UCLASS_MDIO, "mdio-test",
+ &mdio_dev));
+
+ mdio_node = dev_ofnode(mdio_dev);
+ ut_assert(ofnode_valid(mdio_node));
+
+ phy_node = ofnode_find_subnode(mdio_node, name);
+ ut_assert(ofnode_valid(phy_node));
+
+ return get_fw_loader_from_node(phy_node, devp);
+}
+
+static int dm_test_fs_loader_get(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc12"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@1", &fw_loader_dev);
+ ut_asserteq(-ENODEV, ret);
+ ut_assertnull(fw_loader_dev);
+
+ fw_loader_dev = NULL;
+ ret = fw_loader_get_dev(uts, "ethernet-phy@2", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ return 0;
+}
+DM_TEST(dm_test_fs_loader_get, UTF_SCAN_FDT);
+
+static int dm_test_fip_loader_get(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc13"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@3", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ return 0;
+}
+DM_TEST(dm_test_fip_loader_get, UTF_SCAN_FDT);
+
+static int dm_test_fs_loader_get_fw_size(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc12"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@2", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ ret = request_firmware_size(fw_loader_dev, "firmware.bin");
+ ut_asserteq(15, ret);
+
+ return 0;
+}
+DM_TEST(dm_test_fs_loader_get_fw_size, UTF_SCAN_FDT);
+
+static int dm_test_fip_loader_get_fw_size(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc13"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@3", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ ret = request_firmware_size(fw_loader_dev, TEST_UUID);
+ ut_asserteq(5, ret);
+
+ return 0;
+}
+DM_TEST(dm_test_fip_loader_get_fw_size, UTF_SCAN_FDT);
+
+static int dm_test_fs_loader_get_fw_in_buf(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int firmware_size = 15;
+ char *buf;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc12"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@2", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ ret = request_firmware_size(fw_loader_dev, "firmware.bin");
+ ut_asserteq(firmware_size, ret);
+
+ ret = request_firmware_size(fw_loader_dev, "firmware2.bin");
+ ut_asserteq(-ENOENT, ret);
+
+ buf = calloc(firmware_size, sizeof(*buf));
+ ut_assertnonnull(buf);
+
+ /* Normal read */
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size, 0);
+ ut_asserteq(firmware_size, ret);
+ ut_asserteq_mem("This is a test\n", buf, firmware_size);
+
+ /* Read up to size */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size - 5, 0);
+ ut_asserteq(firmware_size - 5, ret);
+ ut_asserteq_mem("This is a \0\0\0\0\0", buf, firmware_size);
+
+ /* Read at offset */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size - 10, 10);
+ ut_asserteq(firmware_size - 10, ret);
+ ut_asserteq_mem("test\n\0\0\0\0\0\0\0\0\0\0", buf, firmware_size);
+
+ /* Read at offset with bigger buffer but firmware ends */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size, 10);
+ ut_asserteq(firmware_size - 10, ret);
+ ut_asserteq_mem("test\n\0\0\0\0\0\0\0\0\0\0", buf, firmware_size);
+
+ /* Read at offset equal to firmware size */
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size, firmware_size);
+ ut_asserteq(0, ret);
+
+ /* Read at offset beyond firmware size */
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware.bin",
+ buf, firmware_size, firmware_size + 1);
+ ut_asserteq(-EINVAL, ret);
+
+ /* Non existent file */
+ ret = request_firmware_into_buf(fw_loader_dev, "firmware2.bin",
+ buf, firmware_size, 0);
+ ut_asserteq(-ENOENT, ret);
+
+ free(buf);
+ return 0;
+}
+DM_TEST(dm_test_fs_loader_get_fw_in_buf, UTF_SCAN_FDT);
+
+static int dm_test_fip_loader_get_fw_in_buf(struct unit_test_state *uts)
+{
+ struct udevice *fw_loader_dev = NULL;
+ int firmware_size = 5;
+ char *buf;
+ int ret;
+
+ ut_assertok(bind_mmc(uts, "mmc13"));
+
+ ret = fw_loader_get_dev(uts, "ethernet-phy@3", &fw_loader_dev);
+ ut_assertok(ret);
+ ut_assertnonnull(fw_loader_dev);
+
+ ret = request_firmware_size(fw_loader_dev, TEST_UUID);
+ ut_asserteq(firmware_size, ret);
+
+ ret = request_firmware_size(fw_loader_dev, TEST_INVAL_UUID);
+ ut_asserteq(-ENOENT, ret);
+
+ buf = calloc(firmware_size, sizeof(*buf));
+ ut_assertnonnull(buf);
+
+ /* Normal read */
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size, 0);
+ ut_asserteq(firmware_size, ret);
+ ut_asserteq_mem("test\n", buf, firmware_size);
+
+ /* Read up to size */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size - 1, 0);
+ ut_asserteq(firmware_size - 1, ret);
+ ut_asserteq_mem("test\0", buf, firmware_size);
+
+ /* Read at offset */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size - 2, 2);
+ ut_asserteq(firmware_size - 2, ret);
+ ut_asserteq_mem("st\n\0\0", buf, firmware_size);
+
+ /* Read at offset with bigger buffer but firmware ends */
+ memset(buf, 0, firmware_size);
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size, 2);
+ ut_asserteq(firmware_size - 2, ret);
+ ut_asserteq_mem("st\n\0\0", buf, firmware_size);
+
+ /* Read at offset equal to firmware size */
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size, firmware_size);
+ ut_asserteq(0, ret);
+
+ /* Read at offset beyond firmware size */
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_UUID,
+ buf, firmware_size, firmware_size + 1);
+ ut_asserteq(-EINVAL, ret);
+
+ /* Non existent file */
+ ret = request_firmware_into_buf(fw_loader_dev, TEST_INVAL_UUID,
+ buf, firmware_size, 0);
+ ut_asserteq(-ENOENT, ret);
+
+ free(buf);
+ return 0;
+}
+DM_TEST(dm_test_fip_loader_get_fw_in_buf, UTF_SCAN_FDT);
diff --git a/test/py/tests/test_ut.py b/test/py/tests/test_ut.py
index 2a5acc18c612..004419615376 100644
--- a/test/py/tests/test_ut.py
+++ b/test/py/tests/test_ut.py
@@ -14,6 +14,7 @@ import struct
import os.path
import re
import pytest
+import uuid
import utils
# pylint: disable=E0611
@@ -685,6 +686,61 @@ def test_ut_dm_init(ubman):
with open(fn, 'wb') as fh:
fh.write(data)
+def setup_fw_loader_fs_image(ubman):
+ """Create a 2MB disk image with a dummy firmware on it"""
+ mmc_dev = 12
+ fname, mnt = fs_helper.setup_image(ubman, mmc_dev, 0xc, img_size=2)
+
+ fw = os.path.join(mnt, 'firmware.bin')
+ data = b'This is a test\n'
+ with open(fw, 'wb') as fh:
+ fh.write(data)
+
+ fsfile = 'vfat1M.img'
+ utils.run_and_log(ubman, f'fallocate -l 1M {fsfile}')
+ utils.run_and_log(ubman, f'mkfs.vfat {fsfile}')
+ utils.run_and_log(ubman, ['sh', '-c', f'mcopy -i {fsfile} {mnt}/* ::/'])
+ copy_partition(ubman, fsfile, fname)
+ utils.run_and_log(ubman, f'rm -rf {mnt}')
+ utils.run_and_log(ubman, f'rm -f {fsfile}')
+
+
+def setup_fw_loader_fip_image(ubman):
+ """Create a 2MB disk image with a FIP blob on it"""
+ mmc_dev = 13
+ fname, mnt = fs_helper.setup_image(ubman, mmc_dev, 0x83, img_size=2)
+
+ fw_name = 'test'
+ data = b'test\n'
+
+ fip_toc_header_size = struct.calcsize('<IIQ')
+ fip_toc_entry_uuid = uuid.uuid3(uuid.NAMESPACE_DNS, fw_name)
+ fip_toc_entry_size = len(fip_toc_entry_uuid.bytes) + struct.calcsize('<QQQ')
+
+ fipfile = 'test.fip'
+ with open(fipfile, 'wb') as fh:
+ # TOC Header: name, serial, flags
+ fh.write(struct.pack('<IIQ', 0xaa640001, 0x12345678, 0))
+
+ # TOC Entry: UUID, offset, size, flags
+ fh.write(fip_toc_entry_uuid.bytes +
+ struct.pack('<QQQ',
+ fip_toc_header_size + 2 * fip_toc_entry_size,
+ len(data), 0))
+
+ # TOC Entry End Marker: Zero UUID + offset set to size of entire FIP
+ # Assume alignment as 1
+ fh.write(uuid.UUID(int=0).bytes +
+ struct.pack('<QQQ',
+ fip_toc_header_size + 2 * fip_toc_entry_size + len(data),
+ 0, 0))
+
+ # Append data
+ fh.write(data)
+
+ copy_partition(ubman, fipfile, fname)
+ utils.run_and_log(ubman, f'rm -rf {mnt}')
+ utils.run_and_log(ubman, f'rm -f {fipfile}')
def setup_efi_image(ubman):
"""Create a 20MB disk image with an EFI app on it"""
@@ -752,6 +808,8 @@ def test_ut_dm_init_bootstd(ubman):
setup_cedit_file(ubman)
setup_cros_image(ubman)
setup_android_image(ubman)
+ setup_fw_loader_fs_image(ubman)
+ setup_fw_loader_fip_image(ubman)
setup_efi_image(ubman)
setup_rauc_image(ubman)
setup_bls_prefix_image(ubman)
--
2.55.0
next prev parent reply other threads:[~2026-10-27 12:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 12:38 [PATCH v11 0/8] misc: fs_loader: reorg and split to FS and FW loader + FIP loader Christian Marangi
2026-10-27 12:38 ` [PATCH v11 1/8] misc: fs_loader: fix ubifs not unmounted on dev_get_priv error Christian Marangi
2026-10-27 12:38 ` [PATCH v11 2/8] misc: fs_loader: reorganize and split to FS loader and FW UCLASS Christian Marangi
2026-10-27 12:38 ` [PATCH v11 3/8] misc: fw_loader: implement generic get_fw_loader_from_node() Christian Marangi
2026-10-27 12:38 ` [PATCH v11 4/8] misc: fs_loader: validate requested offset on reading file Christian Marangi
2026-10-27 14:36 ` Simon Glass
2026-10-27 14:41 ` Christian Marangi (Ansuel)
2026-10-27 12:39 ` [PATCH v11 5/8] misc: fw_loader: implement request_firmware_size() OP Christian Marangi
2026-10-27 12:39 ` [PATCH v11 6/8] doc: dtbinding: Update documentation for Generic Firmware loader Christian Marangi
2026-10-27 12:39 ` [PATCH v11 7/8] misc: fw_loader: introduce FIP loader driver Christian Marangi
2026-10-27 12:39 ` Christian Marangi [this message]
2026-10-27 14:36 ` [PATCH v11 8/8] test: dm: Add test for FW Loader feature Simon Glass
2026-10-27 14:36 ` [PATCH v11 0/8] misc: fs_loader: reorg and split to FS and FW loader + FIP loader Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027123905.839-9-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=alchark@flipper.net \
--cc=anshuld@ti.com \
--cc=aristo.chen@canonical.com \
--cc=casey.connolly@linaro.org \
--cc=daniel@makrotopia.org \
--cc=hs@nabladev.com \
--cc=jbx6244@gmail.com \
--cc=lucienzx159@gmail.com \
--cc=m.schwan@phytec.de \
--cc=marcello.bauer@9elements.com \
--cc=marek.vasut+renesas@mailbox.org \
--cc=mateuslima.ti@gmail.com \
--cc=me@ziyao.cc \
--cc=mehmet.fide@screeningeagle.com \
--cc=michal.simek@amd.com \
--cc=mkorpershoek@kernel.org \
--cc=msp@baylibre.com \
--cc=n-francis@ti.com \
--cc=neil.armstrong@linaro.org \
--cc=patrice.chotard@foss.st.com \
--cc=peng.fan@nxp.com \
--cc=quentin.schulz@cherry.de \
--cc=ravi@prevas.dk \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.u-boot-project.org \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.