Hi Ilias, The rzero refers to the boot argument that must be 0 according to the register conventions of FW Handoff spec. Yes, you are right. I should check this at the beginning of the function.
Thanks and regards, Raymond On Wed, 20 Dec 2023 at 07:54, Ilias Apalodimas <ilias.apalodi...@linaro.org> wrote: > Hi Raymond, > > On Tue, 19 Dec 2023 at 23:11, Raymond Mao <raymond....@linaro.org> wrote: > > > > Add bloblist_check_reg_conv() to check whether the bloblist is compliant > > to the register conventions defined in Firmware Handoff specification. > > This API can be used for all Arm platforms. > > > > Signed-off-by: Raymond Mao <raymond....@linaro.org> > > --- > > common/bloblist.c | 15 +++++++++++++++ > > include/bloblist.h | 12 ++++++++++++ > > 2 files changed, 27 insertions(+) > > > > diff --git a/common/bloblist.c b/common/bloblist.c > > index 625e480f6b..232ca4c6ce 100644 > > --- a/common/bloblist.c > > +++ b/common/bloblist.c > > @@ -542,3 +542,18 @@ int bloblist_maybe_init(void) > > > > return 0; > > } > > + > > +int bloblist_check_reg_conv(ulong rfdt, ulong rzero) > > +{ > > + ulong fdt; > > + > > + if (!IS_ENABLED(CONFIG_OF_BOARD)) > > + return 0; > > + > > + fdt = (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0); > > + > > + if (rfdt != fdt || rzero != 0) > > + return -EIO; > > What is rzero supposed to be doing here? If its only valid value is !0 > why arent we checking it earlier? > > Thanks > /Ilias > > + > > + return 0; > > +} > > diff --git a/include/bloblist.h b/include/bloblist.h > > index 84fc943819..b5d0f147f6 100644 > > --- a/include/bloblist.h > > +++ b/include/bloblist.h > > @@ -461,4 +461,16 @@ static inline int bloblist_maybe_init(void) > > } > > #endif /* BLOBLIST */ > > > > +/** > > + * bloblist_check_reg_conv() - Check whether the bloblist is compliant > to > > + * the register conventions according to the > > + * Firmware Handoff spec. > > + * > > + * @rfdt: Register that holds the FDT base address. > > + * @rzero: Register that must be zero. > > + * Return: 0 if OK, -EIO if the bloblist is not compliant to the > register > > + * conventions. > > + */ > > +int bloblist_check_reg_conv(ulong rfdt, ulong rzero); > > + > > #endif /* __BLOBLIST_H */ > > -- > > 2.25.1 > > >