Project

General

Profile

Actions

Bug #429

closed

I2C CR50 TPM fails to initialize

Added by Matt DeVillier over 1 year ago. Updated over 1 year ago.

Status:
Resolved
Priority:
High
Assignee:
-
Category:
-
Target version:
Start date:
10/17/2022
Due date:
% Done:

0%

Estimated time:
Affected versions:
Needs backport to:
Affected hardware:
Affected OS:

Description

On several (but not all) Chromebook platforms which use an I2C interface for the CR50 TPM, the TPM fails to initialize due to I2C transaction errors.

The following boards with I2C CR50 TPM are known to be affected:
google/brya (banshee variant confirmed, others untested)
google/drallion
google/poppy (soraka and nautilus variants)
google/reef (all variants)

The following boards with I2C CR50 TPM are known to be working:
google/eve
google/guybrush
google/kahlee
google/zork

cbmem shows the following, with the i2c transactions repeating 100x until failing. This causes a significant increase in boot time.

[INFO ]  Probing TPM I2C: i2c 2:50 W 1 bytes : 06                                              
[ERROR]  I2C TX abort detected (00000001)                                                      
[ERROR]  cr50_i2c_read: Address write failed                                                   
[INFO ]  .i2c 2:50 W 1 bytes : 06                                                              
[ERROR]  I2C TX abort detected (00000001)                                                      
[ERROR]  cr50_i2c_read: Address write failed                                                   
...

soraka/nautilus show slightly different output:

[INFO ]  Probing TPM I2C: Cr50 TPM IRQ timeout!
[INFO ]  .Cr50 TPM IRQ timeout!
[INFO ]  .Cr50 TPM IRQ timeout!
[INFO ]  .Cr50 TPM IRQ timeout!
...
Actions #1

Updated by Paul Menzel over 1 year ago

  • Description updated (diff)
Actions #2

Updated by Matt DeVillier over 1 year ago

did some more testing, and confirmed that this issue is not present when vboot is used (RO only is fine) - so the issue potentially is the lack of early init by vboot leading to failure to init during ramstage. Will take a look and see what's different about the two

edit: issue is that TPM init in ramstage is occurring before the i2c bus has been initialized. Will push a fix

Actions #4

Updated by Matt DeVillier over 1 year ago

  • Status changed from New to Resolved
Actions

Also available in: Atom PDF