[PATCH v3 4/5] cmd: abootimg: Add 'get ramdisk' command
Guillaume La Roque
glaroque at baylibre.com
Mon Nov 24 11:17:13 CET 2025
Hi Simon,
Le 19/11/2025 à 14:17, Simon Glass a écrit :
> Hi Guillaume,
>
> On Fri, 14 Nov 2025 at 08:28, Guillaume La Roque (TI.com)
> <glaroque at baylibre.com> wrote:
>> Add support for retrieving ramdisk address and size from Android boot
>> images. This command allows users to extract the ramdisk information
>> for boot image v3+ which combines vendor ramdisk, boot ramdisk and
>> bootconfig sections.
>>
>> Reviewed-by: Mattijs Korpershoek <mkorpershoek at kernel.org>
>> Signed-off-by: Guillaume La Roque (TI.com) <glaroque at baylibre.com>
>> ---
>> cmd/abootimg.c | 35 ++++++++++++++++++++++++++++++++++-
>> 1 file changed, 34 insertions(+), 1 deletion(-)
>>
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
>> diff --git a/cmd/abootimg.c b/cmd/abootimg.c
>> index 6fb52153786..2a8e2c20941 100644
>> --- a/cmd/abootimg.c
>> +++ b/cmd/abootimg.c
>> @@ -230,6 +230,33 @@ static int do_abootimg_addr(struct cmd_tbl *cmdtp, int flag, int argc,
>> return CMD_RET_SUCCESS;
>> }
>>
>> +static int abootimg_get_ramdisk(int argc, char *const argv[])
>> +{
>> + ulong rd_data, rd_len;
>> +
>> + if (argc > 2)
>> + return CMD_RET_USAGE;
>> +
>> + /*
>> + * Call android_image_get_ramdisk with UNMAPPED addresses
>> + * The function will do its own mapping internally as needed
>> + */
>> + if (android_image_get_ramdisk((void *)abootimg_addr(),
>> + (void *)get_avendor_bootimg_addr(),
> Casting an address to a pointer seems strange. Probably at some point
> the API should be updated to have an address.
>
> You can use nomap_sysmem() but that is more for things like ACPI
> tables which embed addresses, so in this case I think an address would
> be better.
i will do it in other patch after this series if it's ok for you
>
>> + &rd_data, &rd_len))
>> + return CMD_RET_FAILURE;
>> +
>> + if (argc == 0) {
>> + printf("%lx\n", rd_data);
>> + } else {
>> + env_set_hex(argv[0], rd_data);
>> + if (argc == 2)
>> + env_set_hex(argv[1], rd_len);
>> + }
>> +
>> + return CMD_RET_SUCCESS;
>> +}
>> +
>> static int do_abootimg_get(struct cmd_tbl *cmdtp, int flag, int argc,
>> char *const argv[])
>> {
>> @@ -249,6 +276,8 @@ static int do_abootimg_get(struct cmd_tbl *cmdtp, int flag, int argc,
>> return abootimg_get_dtb_load_addr(argc, argv);
>> else if (!strcmp(param, "dtb"))
>> return abootimg_get_dtb(argc, argv);
>> + else if (!strcmp(param, "ramdisk"))
>> + return abootimg_get_ramdisk(argc, argv);
>>
>> return CMD_RET_USAGE;
>> }
>> @@ -315,5 +344,9 @@ U_BOOT_CMD(
>> " - get address and size (hex) of DT blob in the image by index\n"
>> " <num>: index number of desired DT blob in DTB area\n"
>> " [addr_var]: variable name to contain DT blob address\n"
>> - " [size_var]: variable name to contain DT blob size"
>> + " [size_var]: variable name to contain DT blob size\n"
>> + "abootimg get ramdisk [addr_var [size_var]]\n"
>> + " - get address and size (hex) of ramdisk in the image\n"
>> + " [addr_var]: variable name to contain ramdisk address\n"
>> + " [size_var]: variable name to contain ramdisk size"
>> );
>>
>> --
>> 2.34.1
>>
> Regards,
> Simon
Regards,
Guillaume
More information about the U-Boot
mailing list