Messages in this thread | | | Date | Wed, 22 Nov 2023 07:34:33 -0500 | Subject | Re: [PATCH] tpm: Start the tpm2 before running a self test. | From | Stefan Berger <> |
| |
On 11/22/23 01:55, Hermin Anggawijaya wrote: > Before sending a command to attempt the self test, the TPM > may need to be started, otherwise the self test returns > TPM2_RC_INITIALIZE value causing a log as follows: > "tpm tpm0: A TPM error (256) occurred attempting the self test". > > Signed-off-by: Hermin Anggawijaya <hermin.anggawijaya@alliedtelesis.co.nz> > --- > drivers/char/tpm/tpm2-cmd.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c > index 93545be190a5..0530f3b5f86a 100644 > --- a/drivers/char/tpm/tpm2-cmd.c > +++ b/drivers/char/tpm/tpm2-cmd.c > @@ -737,15 +737,15 @@ int tpm2_auto_startup(struct tpm_chip *chip) > if (rc) > goto out; > > + rc = tpm2_startup(chip); > + if (rc && rc != TPM2_RC_INITIALIZE) > + goto out; > +
Most platforms should have firmware initialize the TPM 2 these days. Therefore, a selftest should work and in case it doesn't work you fall back to the tpm2_startup below and if you get an error message in the log you at least know that you firmware is not up-to-date.
> rc = tpm2_do_selftest(chip); > if (rc && rc != TPM2_RC_INITIALIZE) > goto out; > > if (rc == TPM2_RC_INITIALIZE) { > - rc = tpm2_startup(chip); > - if (rc) > - goto out; > - > rc = tpm2_do_selftest(chip); > if (rc) > goto out;
| |