Re: [PATCH 0/2] tpm: Stop retrying TPMs that have stopped working
From: Jarkko Sakkinen
Date: Wed Nov 11 2026 - 18:10:05 EST
On Thu, Nov 12, 2026 at 12:30:35AM +0200, Jarkko Sakkinen wrote:
> On Wed, Nov 11, 2026 at 01:57:32AM -0800, Breno Leitao wrote:
> > On Meta's datacenter, given the size, TPMs that stop working write about
> > 54 million lines a day to the kernel log, because nothing in the kernel
> > gives up on them.
> >
> > Two cases make up nearly all of it.
> >
> > Some TPMs stop responding. Every command then fails only after the
> > transport timeout, while the hwrng thread and userspace keep sending
> > more.
> >
> > The goal is to retire TPM that are not properly working, similarly to
> > what was done for EFI in commit 4b2c033b5bc971 ("efi/runtime-wrappers:
> > retire the worker if a wedged call ever returns")
> >
> > This feature aim to disable the chip once its commands have kept timing,
> > instead of keeping it in this desolate state.
> >
> > Disabling the chip makes the failure explicit: the log gets one line
> > saying the TPM is disabled, and every later command fails at once
> > instead of timing out.
> >
> > A health-check daemon, such as machine checker, can then detect
> > the broken hardware and send the machine to repair.
> >
> > Signed-off-by: Breno Leitao <leitao@xxxxxxxxxx>
> > ---
> > Breno Leitao (2):
> > tpm: Disable a TPM that stops responding
> > tpm: Disable a TPM whose hwrng reads keep failing
> >
> > drivers/char/tpm/tpm-chip.c | 20 +++++++++++++++++++-
> > drivers/char/tpm/tpm-interface.c | 29 +++++++++++++++++++++++++++++
> > include/linux/tpm.h | 3 +++
> > 3 files changed, 51 insertions(+), 1 deletion(-)
> > ---
> > base-commit: 630059a5a632377b9b7b487baccde92b7ae1dd47
> > change-id: 20261110-tpm_unresponsive-a5f71c1db026
> >
> > Best regards,
> > --
> > Breno Leitao <leitao@xxxxxxxxxx>
> >
>
> I think this good stuff so existential condition for having some changes
> to address these issues is fulfilled.
>
> I.e. debating the details through will likely lead to productive results
> :-)
$ tpm2sh return-code 256
TPM_RC_INITIALIZE
I.e. TPM has not been properly initialized by TPM2_Startup().
I.e. TPM is also saying that it is *disabled*.
So acting on this proven fact makes most sense to me.
Br, Jarkko