[SeaBIOS] [PATCH v2 1/3] tpm: Wait for tpmRegValidSts flag on CRQ interface before probing
Stephen Douthit
stephend at silicom-usa.com
Mon Mar 19 17:23:10 CET 2018
On 03/19/2018 12:00 PM, Stefan Berger wrote:
> Wait for the tpmRegValidSts flag on the TPM_LOC_STATE_x register to
> be set; we espect the locAssigned flag to not be set.
s/espect/expect/ and in the subject line s/CRQ/CRB
Just retested the v2 series on my board so:
Tested-by: Stephen Douthit <stephend at silicom-usa.com>
> Real hardware seems to set the tpmRegValidSts flag without for
> example requesting access to a locality.
>
> Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
> ---
> src/hw/tpm_drivers.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/src/hw/tpm_drivers.c b/src/hw/tpm_drivers.c
> index ed58bf5..7e6a96a 100644
> --- a/src/hw/tpm_drivers.c
> +++ b/src/hw/tpm_drivers.c
> @@ -374,12 +374,22 @@ static u32 tis_waitrespready(enum tpmDurationType to_t)
> return rc;
> }
>
> +#define CRB_STATE_VALID_STS 0b10000000
> +#define CRB_STATE_LOC_ASSIGNED 0x00000010
> +#define CRB_STATE_READY_MASK (CRB_STATE_VALID_STS | CRB_STATE_LOC_ASSIGNED)
> +
> /* if device is not there, return '0', '1' otherwise */
> static u32 crb_probe(void)
> {
> if (!CONFIG_TCGBIOS)
> return 0;
>
> + /* Wait for the interface to report it's ready */
> + u32 rc = crb_wait_reg(0, CRB_REG_LOC_STATE, TIS2_DEFAULT_TIMEOUT_D,
> + CRB_STATE_READY_MASK, CRB_STATE_VALID_STS);
> + if (rc)
> + return 0;
> +
> u32 ifaceid = readl(CRB_REG(0, CRB_REG_INTF_ID));
>
> if ((ifaceid & 0xf) != 0xf) {
>
More information about the SeaBIOS
mailing list