[RFC PATCH] cmd: fwu: Dump custom fields from mdata structure
Sughosh Ganu
sughosh.ganu at linaro.org
Fri Mar 21 10:52:45 CET 2025
On Fri, 21 Mar 2025 at 14:09, Michal Simek <michal.simek at amd.com> wrote:
>
>
>
> On 3/21/25 08:40, Sughosh Ganu wrote:
> > On Wed, 5 Jun 2024 at 20:25, Michal Simek <michal.simek at amd.com> wrote:
> >>
> >> The commit cb9ae40a16f0 ("tools: mkfwumdata: add logic to append vendor
> >> data to the FWU metadata") added support for adding vendor data to mdata
> >> structure but it is not visible anywhere that's why extend fwu command to
> >> dump it.
> >>
> >> Signed-off-by: Michal Simek <michal.simek at amd.com>
> >> ---
> >
> > Looks good. Just a couple of nits.
> >
> >>
> >> I am using this for some time to check various configurations that's why it
> >> can be useful for others too.
> >> Sughosh: Maybe there is better way how to dump it.
> >> ---
> >> cmd/fwu_mdata.c | 25 +++++++++++++++++++++++++
> >> 1 file changed, 25 insertions(+)
> >>
> >> diff --git a/cmd/fwu_mdata.c b/cmd/fwu_mdata.c
> >> index 9c048d69a131..ff6435505167 100644
> >> --- a/cmd/fwu_mdata.c
> >> +++ b/cmd/fwu_mdata.c
> >> @@ -7,6 +7,7 @@
> >> #include <dm.h>
> >> #include <fwu.h>
> >> #include <fwu_mdata.h>
> >> +#include <hexdump.h>
> >> #include <log.h>
> >> #include <stdio.h>
> >> #include <stdlib.h>
> >> @@ -45,6 +46,30 @@ static void print_mdata(struct fwu_data *data)
> >> img_info->accepted == 0x1 ? "yes" : "no");
> >> }
> >> }
> >> +
> >> + if (data->version == 2) {
> >> + struct fwu_mdata *mdata = data->fwu_mdata;
> >> + struct fwu_fw_store_desc *desc;
> >> + void *end;
> >> + u32 diff;
> >> +
> >> + /*
> >> + * fwu_mdata defines only header that's why taking it as array
> >> + * which exactly point to image description location
> >> + */
> >> + desc = (struct fwu_fw_store_desc *)&mdata[1];
> >> +
> >> + /* Number of entries is taken from for loop - variable i */
> >> + end = &desc->img_entry[i];
> >> + debug("mdata %p, desc %p, end %p\n", mdata, desc, end);
> >> +
> >> + diff = data->metadata_size - ((void *)end - (void *)mdata);
> >> + if (diff) {
> >> + printf("Custom fields covered by CRC 0x%x\n", diff);
> >
> > It would be better to mention that the value being printed is the
> > length of the vendor data. Or not print the value.
>
>
> printf("Custom fields covered by CRC len: 0x%x\n", diff);
>
> >
> >> + print_hex_dump_bytes("CUSTOM ", DUMP_PREFIX_OFFSET,
> >> + end, diff);
> >> + }
> >
> > Would be better to do a 'select HEXDUMP if FWU_MDATA_V2' under the
> > CMD_FWU_METADATA config.
>
> I think select is too hard here because hexdump is implementing empty function
> if HEXDUMP is not enabled.
>
> imply HEXDUMP if FWU_MDATA_V2
Fine with me.
-sughosh
More information about the U-Boot
mailing list