[openwrt/openwrt] realtek: rt-loader: allow piggy-backed uimage
LEDE Commits
lede-commits at lists.infradead.org
Fri Jan 2 09:03:54 PST 2026
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cd13ed6fcfe7457e6c1539f1c0cf8e8ade33b4fb
commit cd13ed6fcfe7457e6c1539f1c0cf8e8ade33b4fb
Author: Markus Stockhausen <markus.stockhausen at gmx.de>
AuthorDate: Tue Dec 30 17:34:41 2025 +0100
realtek: rt-loader: allow piggy-backed uimage
Until now rt-loader expects a piggy-backed lzma compressed data
stream. Be more flexible and allow a piggy-backed uimage as well.
Signed-off-by: Markus Stockhausen <markus.stockhausen at gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21332
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
target/linux/realtek/image/rt-loader/src/main.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/target/linux/realtek/image/rt-loader/src/main.c b/target/linux/realtek/image/rt-loader/src/main.c
index e8ac501607..80c8ba85d0 100644
--- a/target/linux/realtek/image/rt-loader/src/main.c
+++ b/target/linux/realtek/image/rt-loader/src/main.c
@@ -170,6 +170,27 @@ void load_uimage_from_flash(void *flash_start)
memcpy(_kernel_data_addr, flash_addr + UIMAGE_HDR_SIZE, _kernel_data_size);
}
+bool search_piggy_backed_uimage(void)
+{
+ void *addr = _kernel_data_addr;
+
+ /*
+ * Piggy-backed data might be an uImage or not. Run a lazy uImage check.
+ * In case it fails it should be safe to assume an lzma data stream.
+ */
+ search_image(&addr, &_kernel_data_size, &_kernel_load_addr);
+
+ if (!addr)
+ return false;
+
+ printf("piggy-backed uImage '%s' found at 0x%08x with load address 0x%08x\n",
+ (char *)(addr + 32), addr, _kernel_load_addr);
+
+ _kernel_data_addr = addr + UIMAGE_HDR_SIZE;
+
+ return true;
+}
+
void main(unsigned long reg_a0, unsigned long reg_a1,
unsigned long reg_a2, unsigned long reg_a3)
{
@@ -195,7 +216,7 @@ void main(unsigned long reg_a0, unsigned long reg_a1,
*/
if (flash_start)
load_uimage_from_flash(flash_start);
- else if (kernel_addr)
+ else if (!search_piggy_backed_uimage() && kernel_addr)
_kernel_load_addr = kernel_addr;
/*
More information about the lede-commits
mailing list