[PATCH] WIP: TPM additions

Simon Glass sjg at chromium.org
Mon Feb 20 17:50:31 CET 2023


Hi Ilias,

On Mon, 20 Feb 2023 at 09:48, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Simon,
>
> > + * @dev              TPM device
> > + * Return: TPM2_RC_SUCCESS, on success, or when the TPM returns
> > + * TPM_INVALID_POSTINIT; TPM_FAILEDSELFTEST, if the TPM is in failure state
> > + */
> > +u32 tpm1_auto_start(struct udevice *dev);
> > +
> >  #endif /* __TPM_V1_H */
> > diff --git a/lib/tpm-v1.c b/lib/tpm-v1.c
> > index d0e3ab1b21d..884b8ddbac9 100644
> > --- a/lib/tpm-v1.c
> > +++ b/lib/tpm-v1.c
> > @@ -69,6 +69,17 @@ u32 tpm1_continue_self_test(struct udevice *dev)
> >       return tpm_sendrecv_command(dev, command, NULL, NULL);
> >  }
> >
> > +u32 tpm1_auto_start(struct udevice *dev)
> > +{
> > +     u32 rc;
> > +
> > +     rc = tpm1_startup(dev, TPM_ST_CLEAR);
> > +     if (rc == TPM_INVALID_POSTINIT)
> > +             rc = 0;
>
> I am not an expert in 1.2 devices by any means, but don't you need to start
> auto tests here as well similarly to what 2.0 does?
> Looking at the kernel code it does something along the lines of
>
> rc= tpm1_self_test_full(dev);
> if (rc == TPM_FAILEDSELFTEST) {
> .....
> }
>

Yes, if it has never been done before, e.g. in the factory. I didn't
understand that you were trying to do that. I will update it. Note
that this will add time.

>
> > +
> > +     return rc;
> > -       * -EBUSY return code internally.
>
> [...]
>
> > -       */
> >       ut_assertok(tpm_auto_start(dev));
> >
> >       ut_assert(tpm_report_state(dev, buf, sizeof(buf)));
> > @@ -36,4 +123,4 @@ static int dm_test_tpm(struct unit_test_state *uts)
> >
> >       return 0;
> >  }
> > -DM_TEST(dm_test_tpm, UT_TESTF_SCAN_FDT);
> > +DM_TEST(dm_test_tpm_report_state, UT_TESTF_SCAN_FDT);
> > --
> > 2.39.2.637.g21b0678d19-goog
> >
>
>
>
> Other than that, this looks ok to me

OK I will clean it up and send.

Regards,
Simon


More information about the U-Boot mailing list