From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: linux-integrity@vger.kernel.org
Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Subject: Re: [PATCH v2] tpm: fix intermittent failure with self tests
Date: Mon, 19 Feb 2018 07:21:28 -0500 [thread overview]
Message-ID: <1519042888.4721.2.camel@HansenPartnership.com> (raw)
In-Reply-To: <1518813108.4419.3.camel@HansenPartnership.com>
On Fri, 2018-02-16 at 12:31 -0800, James Bottomley wrote:
> Ever since
>
> commit 2482b1bba5122b1d5516c909832bdd282015b8e9
> Author: Alexander Steffen <Alexander.Steffen@infineon.com>
> Date: Thu Aug 31 19:18:56 2017 +0200
>
> tpm: Trigger only missing TPM 2.0 self tests
>
> My Nuvoton 6xx in a Dell XPS-13 has been intermittently failing to
> work (necessitating a reboot). The problem seems to be that the TPM
> gets into a state where the partial self-test doesn't return
> TPM_RC_SUCCESS (meaning all tests have run to completion), but
> instead
> returns TPM_RC_TESTING (meaning some tests are still running in the
> background). There are various theories that resending the self-test
> command actually causes the tests to restart and thus triggers more
> TPM_RC_TESTING returns until the timeout is exceeded.
>
> There are several issues here: firstly being we shouldn't slow down
> the boot sequence waiting for the self test to complete once the TPM
> backgrounds them. It will actually make available all functions that
> have passed and if it gets a failure return TPM_RC_FAILURE to every
> subsequent command. So the fix is to kick off self tests once and if
> they return TPM_RC_TESTING log that as a backgrounded self test and
> continue on. In order to prevent other tpm users from seeing any
> TPM_RC_TESTING returns (which it might if they send a command
> that needs a TPM subsystem which is still under test), we loop in
> tpm_transmit_cmd until either a timeout or we don't get a
> TPM_RC_TESTING return.
Having run this through a TPM emulator, there's one additional return
that needs to be accounted for: for TPMs that don't get a startup from
the BIOS return TPM_RC_INITIALIZE which is used to trigger the startup
sequence. I'll send a v3 with this fixed.
James
next prev parent reply other threads:[~2018-02-19 12:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-16 20:31 [PATCH v2] tpm: fix intermittent failure with self tests James Bottomley
2018-02-19 12:21 ` James Bottomley [this message]
2018-02-19 12:32 ` Jarkko Sakkinen
2018-02-19 12:56 ` James Bottomley
2018-02-19 21:08 ` Mimi Zohar
2018-02-20 17:10 ` Jarkko Sakkinen
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=1519042888.4721.2.camel@HansenPartnership.com \
--to=james.bottomley@hansenpartnership.com \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=linux-integrity@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.