Hi Raymond, On Tue, 7 Jan 2025 at 08:03, Raymond Mao <[email protected]> wrote: > > Get tpm event log from bloblist instead of FDT when bloblist is > enabled and valid from previous boot stage. > > Signed-off-by: Raymond Mao <[email protected]> > --- > Changes in v2 > - Remove patch dependency. > - Remove the fallback to FDT when BLOBLIST is selected. > > lib/tpm_tcg2.c | 34 +++++++++++++++++++++------------- > 1 file changed, 21 insertions(+), 13 deletions(-) >
Reviewed-by: Simon Glass <[email protected]> > diff --git a/lib/tpm_tcg2.c b/lib/tpm_tcg2.c > index 7f868cc883..84845fc026 100644 > --- a/lib/tpm_tcg2.c > +++ b/lib/tpm_tcg2.c > @@ -19,6 +19,7 @@ > #include <linux/unaligned/generic.h> > #include <linux/unaligned/le_byteshift.h> > #include "tpm-utils.h" > +#include <bloblist.h> > > int tcg2_get_pcr_info(struct udevice *dev, u32 *supported_pcr, u32 > *active_pcr, > u32 *pcr_banks) > @@ -668,10 +669,19 @@ __weak int tcg2_platform_get_log(struct udevice *dev, > void **addr, u32 *size) Unrelated to this patch, we should use ulong for addresses (at least those which refer to a real memory address that U-Boot can access). If you want a pointer, it should be named 'ptr' (or ptrp in this case). Size should normally be ulong. > const __be32 *size_prop; > int asize; > int ssize; > + struct ofnode_phandle_args args; > + phys_addr_t a; > + fdt_size_t s; > > *addr = NULL; > *size = 0; > > + *addr = bloblist_get_blob(BLOBLISTT_TPM_EVLOG, size); > + if (*addr && *size) > + return 0; > + else if (CONFIG_IS_ENABLED(BLOBLIST)) > + goto map_log_mem; > + > addr_prop = dev_read_prop(dev, "tpm_event_log_addr", &asize); > if (!addr_prop) > addr_prop = dev_read_prop(dev, "linux,sml-base", &asize); > @@ -686,22 +696,20 @@ __weak int tcg2_platform_get_log(struct udevice *dev, > void **addr, u32 *size) > > *addr = map_physmem(a, s, MAP_NOCACHE); > *size = (u32)s; > - } else { > - struct ofnode_phandle_args args; > - phys_addr_t a; > - fdt_size_t s; > > - if (dev_read_phandle_with_args(dev, "memory-region", NULL, 0, > - 0, &args)) > - return -ENODEV; > + return 0; > + } > > - a = ofnode_get_addr_size(args.node, "reg", &s); > - if (a == FDT_ADDR_T_NONE) > - return -ENOMEM; > +map_log_mem: > + if (dev_read_phandle_with_args(dev, "memory-region", NULL, 0, 0, > &args)) > + return -ENODEV; > > - *addr = map_physmem(a, s, MAP_NOCACHE); > - *size = (u32)s; > - } > + a = ofnode_get_addr_size(args.node, "reg", &s); > + if (a == FDT_ADDR_T_NONE) > + return -ENOMEM; > + > + *addr = map_physmem(a, s, MAP_NOCACHE); > + *size = (u32)s; > > return 0; > } > -- > 2.25.1 > Regards, Simon

