[coreboot-gerrit] Change in coreboot[master]: drivers/pc80/tpm: Add some optional delay to tis_readresponse()
Philipp Deppenwiese (Code Review)
gerrit at coreboot.org
Mon Apr 16 17:47:57 CEST 2018
Philipp Deppenwiese has submitted this change and it was merged. ( https://review.coreboot.org/25322 )
Change subject: drivers/pc80/tpm: Add some optional delay to tis_readresponse()
......................................................................
drivers/pc80/tpm: Add some optional delay to tis_readresponse()
Certain TPMs (observed on Infineon SLB9635 installed on revolve 810 g1)
seem to need some delay between tis_wait_valid() and
tis_has_valid_data(), or tis_has_valid_data() may invalidly return 0,
ending the loop immaturely with some bytes left unread, and fail to
pass the check below, causing the current command not finalized by
tis_command_ready(), and blocking any later tis_wait_ready().
This time the added delay is controlled by a Kconfig option
TPM_RDRESP_NEED_DELAY.
Change-Id: Ic2a2f252e72a0bbce51e2863f8e46647b1570ba5
Signed-off-by: Bill XIE <persmule at gmail.com>
Reviewed-on: https://review.coreboot.org/25322
Reviewed-by: Paul Menzel <paulepanter at users.sourceforge.net>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki at gmail.com>
Tested-by: build bot (Jenkins) <no-reply at coreboot.org>
---
M src/drivers/pc80/tpm/Kconfig
M src/drivers/pc80/tpm/tis.c
2 files changed, 17 insertions(+), 0 deletions(-)
Approvals:
build bot (Jenkins): Verified
Paul Menzel: Looks good to me, but someone else must approve
Philipp Deppenwiese: Looks good to me, approved
diff --git a/src/drivers/pc80/tpm/Kconfig b/src/drivers/pc80/tpm/Kconfig
index 3bd9083..879b4a2 100644
--- a/src/drivers/pc80/tpm/Kconfig
+++ b/src/drivers/pc80/tpm/Kconfig
@@ -46,3 +46,12 @@
depends on LPC_TPM
help
Deactivate TPM by issuing deactivate command.
+
+config TPM_RDRESP_NEED_DELAY
+ bool "Enable Delay Workaround for TPM"
+ default n
+ depends on LPC_TPM
+ help
+ Certain TPMs seem to need some delay when reading response
+ to work around a race-condition-related issue, possibly
+ caused by ill-programmed TPM firmware.
diff --git a/src/drivers/pc80/tpm/tis.c b/src/drivers/pc80/tpm/tis.c
index 9802654..714b7e5 100644
--- a/src/drivers/pc80/tpm/tis.c
+++ b/src/drivers/pc80/tpm/tis.c
@@ -595,6 +595,14 @@
if (offset == expected_count)
break; /* We got all we need */
+ /*
+ * Certain TPMs seem to need some delay between tis_wait_valid()
+ * and tis_has_valid_data(), or some race-condition-related
+ * issue will occur.
+ */
+ if (IS_ENABLED(CONFIG_TPM_RDRESP_NEED_DELAY))
+ udelay(10);
+
} while (tis_has_valid_data(locality));
/* * Make sure we indeed read all there was. */
--
To view, visit https://review.coreboot.org/25322
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic2a2f252e72a0bbce51e2863f8e46647b1570ba5
Gerrit-Change-Number: 25322
Gerrit-PatchSet: 4
Gerrit-Owner: Bill XIE <persmule at gmail.com>
Gerrit-Reviewer: Bill XIE <persmule at gmail.com>
Gerrit-Reviewer: Furquan Shaikh <furquan at google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter at users.sourceforge.net>
Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki at gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply at coreboot.org>
Gerrit-CC: Aaron Durbin <adurbin at chromium.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180416/e9844a43/attachment.html>
More information about the coreboot-gerrit
mailing list