mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Surendran Kanagaraj <surenkj@amazon.com>
To: Jarkko Sakkinen <jarkko@kernel.org>,
	Peter Huewe <peterhuewe@gmx.de>, Jason Gunthorpe <jgg@ziepe.ca>
Cc: <linux-integrity@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<nh-open-source@amazon.com>, Alexander Graf <graf@amazon.de>,
	"Gunnar Kudrjavets" <gunnarku@amazon.com>,
	Josh Levinson <joshlev@amazon.com>
Subject: [PATCH 0/2] tpm: Handle transient NitroTPM unavailability
Date: Wed, 23 Sep 2026 14:28:32 +0000	[thread overview]
Message-ID: <20260923142834.16786-1-surenkj@amazon.com> (raw)

TPM commands need to complete within the duration defined in the
TPM2 spec or keep answering TPM2_RC_RETRY for at most TPM2_DURATION_LONG
(2s).

Devices that have different timeout requirements than the TPM2 spec
can either exhaust the retry budget or delay the command completion.
NitroTPM can very rarely enter a mode where it either sends
TPM2_RC_RETRY for more than 2s or completes the command late.

When this happens in tpm2_load_null() during auth session start, the
driver sets TPM_CHIP_FLAG_DISABLE and fails all subsequent TPM requests.

    tpm tpm0: in retry loop
    tpm tpm0: tpm2_load_context: failed with a TPM error 0x0922

Add chip->busy_timeout_ms to support devices that have this
unavailability window (patch 1). It raises the TPM2_RC_RETRY budget and
the per command duration to at least that value. The CRB driver reads
the vendor ID from the interface ID register and sets 30s for
NitroTPM (patch 2)

Tested on an EC2 instance with NitroTPM by inducing unavailability
windows under HMAC session workloads, and in QEMU with swtpm by holding
the TPM in TPM2_RC_RETRY and stalling command completion past 2s.

Surendran Kanagaraj (2):
  tpm: Add per-chip timeout for transient unavailability
  tpm_crb: Raise timeouts for Amazon NitroTPM

 drivers/char/tpm/tpm-interface.c | 11 +++++--
 drivers/char/tpm/tpm.h           |  2 +-
 drivers/char/tpm/tpm2-cmd.c      | 17 +++++++---
 drivers/char/tpm/tpm_crb.c       | 54 ++++++++++++++++++++++++++++++++
 include/linux/tpm.h              |  7 +++++
 5 files changed, 82 insertions(+), 9 deletions(-)


base-commit: ab411db3c3b1fd0c70a36fb32c96b2c60175210b
-- 
2.47.3


             reply	other threads:[~2026-09-23 14:28 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-23 14:28 Surendran Kanagaraj [this message]
2026-09-23 14:28 ` [PATCH 1/2] tpm: Add per-chip timeout for transient unavailability Surendran Kanagaraj
2026-09-25  9:04   ` Breno Leitao
2026-09-23 14:28 ` [PATCH 2/2] tpm_crb: Raise timeouts for Amazon NitroTPM Surendran Kanagaraj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260923142834.16786-1-surenkj@amazon.com \
    --to=surenkj@amazon.com \
    --cc=graf@amazon.de \
    --cc=gunnarku@amazon.com \
    --cc=jarkko@kernel.org \
    --cc=jgg@ziepe.ca \
    --cc=joshlev@amazon.com \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nh-open-source@amazon.com \
    --cc=peterhuewe@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®