Skip to content

Commit 82afdf1

Browse files
committed
tpm: tis: Double the timeout B to 4s
JIRA: https://issues.redhat.com/browse/RHEL-72765 Upstream Status: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git commit 2f661f7 Author: Michal Suchanek <msuchanek@suse.de> Date: Fri Apr 4 10:23:14 2025 +0200 tpm: tis: Double the timeout B to 4s With some Infineon chips the timeouts in tpm_tis_send_data (both B and C) can reach up to about 2250 ms. Timeout C is retried since commit de9e33d ("tpm, tpm_tis: Workaround failed command reception on Infineon devices") Timeout B still needs to be extended. The problem is most commonly encountered with context related operation such as load context/save context. These are issued directly by the kernel, and there is no retry logic for them. When a filesystem is set up to use the TPM for unlocking the boot fails, and restarting the userspace service is ineffective. This is likely because ignoring a load context/save context result puts the real TPM state and the TPM state expected by the kernel out of sync. Chips known to be affected: tpm_tis IFX1522:00: 2.0 TPM (device-id 0x1D, rev-id 54) Description: SLB9672 Firmware Revision: 15.22 tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1B, rev-id 22) Firmware Revision: 7.83 tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1A, rev-id 16) Firmware Revision: 5.63 Link: https://lore.kernel.org/linux-integrity/Z5pI07m0Muapyu9w@kitsune.suse.cz/ Signed-off-by: Michal Suchanek <msuchanek@suse.de> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Štěpán Horáček <shoracek@redhat.com>
1 parent 7440fcd commit 82afdf1

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

drivers/char/tpm/tpm_tis_core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ enum tis_int_flags {
5353
enum tis_defaults {
5454
TIS_MEM_LEN = 0x5000,
5555
TIS_SHORT_TIMEOUT = 750, /* ms */
56-
TIS_LONG_TIMEOUT = 2000, /* 2 sec */
56+
TIS_LONG_TIMEOUT = 4000, /* 4 secs */
5757
TIS_TIMEOUT_MIN_ATML = 14700, /* usecs */
5858
TIS_TIMEOUT_MAX_ATML = 15000, /* usecs */
5959
};

include/linux/tpm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ enum tpm2_const {
181181

182182
enum tpm2_timeouts {
183183
TPM2_TIMEOUT_A = 750,
184-
TPM2_TIMEOUT_B = 2000,
184+
TPM2_TIMEOUT_B = 4000,
185185
TPM2_TIMEOUT_C = 200,
186186
TPM2_TIMEOUT_D = 30,
187187
TPM2_DURATION_SHORT = 20,

0 commit comments

Comments
 (0)