Message ID | 20170912075825.5849-1-dengler@linutronix.de |
---|---|
State | Superseded |
Headers | show |
Series | [U-Boot,v1] cmd: set filesize variable in ubi read | expand |
Hello Holger, Am 12.09.2017 um 09:58 schrieb Holger Dengler: > After a successful read of a UBI volume, the variable filesize is set > to the number of read bytes. To boot linux with a raw initramfs/initrd, > you must specify the exact size of the initramfs/initrd image in boot > command. If the initramfs/inird is read from UBI volume, $filesize is > required to access the number of read bytes. > > Example: > ubi read ${loadaddr} kernelvol > ubi read ${fdtaddr} dtbvol > ubi read ${initrd_addr} initrdvol > bootz ${loadaddr} ${initrd_addr}:${filesize} ${fdt_addr} > > Signed-off-by: Holger Dengler <dengler@linutronix.de> > --- > cmd/ubi.c | 5 +++++ > 1 file changed, 5 insertions(+) Applied to u-boot-ubi.git Thanks! bye, Heiko
diff --git a/cmd/ubi.c b/cmd/ubi.c index 222be5a357..ac9a582437 100644 --- a/cmd/ubi.c +++ b/cmd/ubi.c @@ -334,6 +334,7 @@ int ubi_volume_read(char *volume, char *buf, size_t size) unsigned long long tmp; struct ubi_volume *vol; loff_t offp = 0; + size_t len_read; vol = ubi_find_volume(volume); if (vol == NULL) @@ -373,6 +374,7 @@ int ubi_volume_read(char *volume, char *buf, size_t size) tmp = offp; off = do_div(tmp, vol->usable_leb_size); lnum = tmp; + len_read = size; do { if (off + len >= vol->usable_leb_size) len = vol->usable_leb_size - off; @@ -398,6 +400,9 @@ int ubi_volume_read(char *volume, char *buf, size_t size) len = size > tbuf_size ? tbuf_size : size; } while (size); + if (!size) + env_set_hex("filesize", len_read); + free(tbuf); return err; }
After a successful read of a UBI volume, the variable filesize is set to the number of read bytes. To boot linux with a raw initramfs/initrd, you must specify the exact size of the initramfs/initrd image in boot command. If the initramfs/inird is read from UBI volume, $filesize is required to access the number of read bytes. Example: ubi read ${loadaddr} kernelvol ubi read ${fdtaddr} dtbvol ubi read ${initrd_addr} initrdvol bootz ${loadaddr} ${initrd_addr}:${filesize} ${fdt_addr} Signed-off-by: Holger Dengler <dengler@linutronix.de> --- cmd/ubi.c | 5 +++++ 1 file changed, 5 insertions(+)