[PATCH v2 06/10] configs: chromebook_coral: Build TPMV1 library routines

Sughosh Ganu sughosh.ganu at linaro.org
Wed Mar 2 19:12:07 CET 2022


hi Simon,

On Wed, 2 Mar 2022 at 21:02, Simon Glass <sjg at chromium.org> wrote:
>
> Hi Sughosh,
>
> On Tue, 1 Mar 2022 at 21:50, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
> >
> > hi Simon,
> >
> > On Tue, 1 Mar 2022 at 20:29, Simon Glass <sjg at chromium.org> wrote:
> > >
> > > Hi Sughosh,
> > >
> > > On Mon, 28 Feb 2022 at 05:07, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
> > > >
> > > > The TPM code currently does a runtime detection of the TPM version and
> > > > calls appropriate functions. Chromebook Coral is one of the platforms
> > > > where the TPMV1 code is disabled at build time. With this, calling TPM
> > > > api's from the TPM uclass driver results in link errors. Enable TPMV1
> > > > library routines and determine the TPM version at runtime like other
> > > > platforms.
> > > >
> > > > Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> > > > ---
> > > >
> > > > Changes since V1: None
> > > >
> > > >  configs/chromebook_coral_defconfig | 1 -
> > > >  1 file changed, 1 deletion(-)
> > > >
> > > > diff --git a/configs/chromebook_coral_defconfig b/configs/chromebook_coral_defconfig
> > > > index 0cd8f39aa3..4704ce25c8 100644
> > > > --- a/configs/chromebook_coral_defconfig
> > > > +++ b/configs/chromebook_coral_defconfig
> > > > @@ -104,7 +104,6 @@ CONFIG_SPI=y
> > > >  CONFIG_ICH_SPI=y
> > > >  # CONFIG_SYSINFO_SMBIOS is not set
> > > >  CONFIG_TPL_SYSRESET=y
> > > > -# CONFIG_TPM_V1 is not set
> > > >  CONFIG_TPM2_CR50_I2C=y
> > > >  CONFIG_USB_XHCI_HCD=y
> > > >  CONFIG_USB_STORAGE=y
> > > > --
> > > > 2.25.1
> > >
> > > This board does not have a v1 TPM so we don't want to waste code space
> > > adding it.
> >
> > Yes, but because the version detection is happening at runtime, we
> > need both the files to be compiled if we call any of the tpm api from
> > outside lib/tpm. When I call the tpm_startup function from the
> > child_pre_probe callback in tpm-uclass.c, I get link errors for the
> > TPM v2 functions. Similarly for Gazerbeam board.
> >
> > >
> > > The current code works fine and supports both a build-time and
> > > run-time check. What has gone wrong?
> >
> > Does not work when an api is called from the tpm uclass driver.
>
> OK, I see, then the tpm_is_v1() functions need to stay in the header
> file, to fix that.

The link errors are not for the tpm_is_v{1,2} functions -- I had
already moved them to the tpm uclass driver in a previous patch of my
patchset. The link errors are for the tpm{1,2}_startup functions being
undefined for the chromebook_coral and gazerboam platforms. I think
when the tpm_startup function is getting called from within the same
module(lib/tpm) the compiler optimises out the calls to the
non-existing functions. But when called from a different directory,
like the tpm uclass driver in my case, we get link errors.

-sughosh

>
> Regards,
> Simon


More information about the U-Boot mailing list