[PATCH] tpm: Add TPM2_GetTestResult command support

Simon Glass sjg at chromium.org
Mon Jul 3 15:30:53 CEST 2023


Hi Julia,

On Mon, 3 Jul 2023 at 14:03, Julia Daxenberger
<julia.daxenberger at infineon.com> wrote:
>
> Add TPM2_GetTestResult command support and change the command file and the
> help accordingly. Add Python tests and sandbox driver functionality.
>
> The TPM2_GetTestResult command is performed after the TPM2_SelfTest command
> and returns manufacturer-specific information regarding the results of the
> self-test and an indication of the test status.
>
> Signed-off-by: Julia Daxenberger <julia.daxenberger at infineon.com>
> ---
>  cmd/tpm-v2.c                   | 60 +++++++++++++++++++++++++
>  drivers/tpm/tpm2_tis_sandbox.c | 47 ++++++++++++++++++-
>  include/tpm-v2.h               | 23 ++++++++++
>  lib/tpm-v2.c                   | 82 ++++++++++++++++++++++++++++++++++
>  test/py/tests/test_tpm2.py     | 50 +++++++++++++++++++++
>  5 files changed, 261 insertions(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg at chromium.org>


See below

[..]

> diff --git a/test/py/tests/test_tpm2.py b/test/py/tests/test_tpm2.py
> index d2ad6f9e73..aad1d7a55b 100644
> --- a/test/py/tests/test_tpm2.py
> +++ b/test/py/tests/test_tpm2.py
> @@ -1,6 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0+
>  # Copyright (c) 2018, Bootlin
>  # Author: Miquel Raynal <miquel.raynal at bootlin.com>
> +# Copyright (C) 2023 Infineon Technologies AG
>
>  import os.path
>  import pytest
> @@ -316,3 +317,52 @@ def test_tpm2_cleanup(u_boot_console):
>      """Ensure the TPM is cleared from password or test related configuration."""
>
>      force_init(u_boot_console, True)
> +
> + at pytest.mark.buildconfigspec('cmd_tpm_v2')
> +def test_tpm2_get_test_result(u_boot_console):
> +    """Execute a TPM_GetTestResult command.
> +
> +    Ask the TPM to get the test result of the self test.
> +    Display the Test Result and Test Result Data.
> +
> +    Expected default return value of tpm2_get_test_result, if the TPM has not been initialized:
> +    - TPM2_RC_INITIALIZE = TPM2_RC_VER1 + 0x0000 = 0x00000100.
> +
> +    Expected default value for test_result:
> +    - TPM_RC_NEEDS_TEST = 0x00000153, if tpm2 self_test has not been executed.
> +    - TPM_RC_SUCCESS = 0x00000000, if testing is complete without functional failures.
> +
> +    There is no expected default value for the test result data because it would depend on the chip
> +    used. The test result data is therefore not tested.
> +    """
> +    if is_sandbox(u_boot_console):
> +        u_boot_console.restart_uboot()

We should get rid of this somehow. We don't want sandbox rebooting
inthe middle of a test. It makes debugging painful, apart from
anything else. What TPM state needs to be reset?

Looking at tpm2_tis_sandbox.c it is probably the s_state variable. The
TPM state can be preserved across runs and is stored in the state
file.

But if the state file is not being used (no -s argument) then the TPM
should be reset each time DM is brought back up, i.e. between every
test.

So, do we even need this reset?

Regards,
Simon


More information about the U-Boot mailing list