[SeaBIOS] [PATCH v2 1/3] tpm: Wait for tpmRegValidSts flag on CRQ interface before probing

Stefan Berger stefanb at linux.vnet.ibm.com
Mon Mar 19 17:32:56 CET 2018


On 03/19/2018 12:23 PM, Stephen Douthit wrote:
> 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

gee... CRQ is a ppc64 thing.

>
> Just retested the v2 series on my board so:
> Tested-by: Stephen Douthit <stephend at silicom-usa.com>

Thanks.

    Stefan

>
>> 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