From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Mario.Limonciello@dell.com, pmenzel@molgen.mpg.de
Cc: linux-integrity@vger.kernel.org, regressions@leemhuis.info,
Alexander.Steffen@infineon.com
Subject: Re: TPM selftest failure in 4.15 (Dell XPS 13, Nuvoton 6xx)
Date: Fri, 02 Feb 2018 06:46:01 +0100 [thread overview]
Message-ID: <1517550361.3222.20.camel@HansenPartnership.com> (raw)
In-Reply-To: <d95f60f2e375446db3987f7d082d5cdd@ausx13mpc120.AMER.DELL.COM>
On Thu, 2018-02-01 at 20:12 +0000, Mario.Limonciello@dell.com wrote:
>
> >
> > -----Original Message-----
> > From: Paul Menzel [mailto:pmenzel@molgen.mpg.de]
> > Sent: Thursday, February 1, 2018 1:17 PM
> > To: James Bottomley <James.Bottomley@HansenPartnership.com>
> > Cc: linux-integrity <linux-integrity@vger.kernel.org>; Limonciello,
> > Mario
> > <Mario_Limonciello@Dell.com>; regressions@leemhuis.info; Alexander
> > Steffen
> > <Alexander.Steffen@infineon.com>
> > Subject: Re: TPM selftest failure in 4.15 (Dell XPS 13, Nuvoton
> > 6xx)
> >
> > [resend with regressions@ address fixed, sorry]
> >
> > Am 01.02.2018 um 20:16 schrieb Paul Menzel:
> > >
> > > Dear James,
> > >
> > >
> > > Am 01.02.2018 um 16:24 schrieb James Bottomley:
> > > >
> > > > On Thu, 2018-02-01 at 12:42 +0000, James Bottomley wrote:
> > > > >
> > > > > On Thu, 2018-02-01 at 13:21 +0100, Paul Menzel wrote:
> > >
> > > >
> > > > >
> > > > > >
> > > > > > On 02/01/18 13:16, James Bottomley wrote:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Embarrassingly enough, I'm just on my way to do a TPM
> > > > > > > talk at
> > > > > > > FOSDEM. I installed my shiny new 4.15 kernel on the
> > > > > > > 'plane and
> > > > > > > this is what I got after I arrived this morning:
> > > > > > >
> > > > > > > jejb@jarvis:~> dmesg | grep -i tpm
> > > > > > > [ 0.000000] ACPI: TPM2 0x0000000079446CC0 000034
> > > > > > > (v03 Tpm2Tabl 00000001 AMI 00000000)
> > > > > > > [ 1.598059] tpm_tis MSFT0101:00: 2.0 TPM (device-id
> > > > > > > 0xFE, rev-id 2)
> > > > > > > [ 1.608863] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 1.640052] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 1.691215] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 1.782377] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 1.953539] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 2.284701] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 2.935743] tpm tpm0: A TPM error (2314) occurred
> > > > > > > continue selftest
> > > > > > > [ 4.216236] tpm tpm0: TPM self test failed
> > > > > > > [ 4.236829] ima: No TPM chip found, activating TPM-
> > > > > > > bypass! (rc=-19)
> > > > > > >
> > > > > > > The error is TPM_RC_TESTING, which means it looks like we
> > > > > > > don't wait long enough for the selftests to complete. I
> > > > > > > get this all the time booting with 4.15. Fortunately I
> > > > > > > have a 4.13 backup kernel which is fine (otherwise I'd be
> > > > > > > a bit hosed since all my keys now require a TPM).
> > > > > > >
> > > > > > > I'll debug on the train; my current suspicion is that the
> > > > > > > TPM_LONG duration might be a bit short for this chip (A
> > > > > > > nuvoton 6xx in a dell XPS-13).
> > > > > >
> > > > > > Please join the thread [1], where I reported the same
> > > > > > problem for the Dell XPS 13 9360. Unfortunately, no
> > > > > > solution was found, especially, as I did not use the TPM.
> > > > > > Other owners of that system unfortunately didn't have time
> > > > > > to report back if it work for them, so the "conclusion"
> > > > > > kind of was, that my TPM was broken, and had to be tested.
> > > > >
> > > > > OK, I'll try to find a fix. It's clearly a marginal problem
> > > > > since I've booted most -rc kernels without issue, so there's
> > > > > some slight timing change in 4.15 that triggered it. It
> > > > > could also be a shutdown issue. Any NV ram stuff deferred to
> > > > > start up would take a variable amount of time.
> > > > >
> > > > > You'd almost think it's some sort of TPM self protest: the
> > > > > more stuff I use it for the more problems it seems to create.
> > > > > I'm definitely motivated to fix it because without a TPM I
> > > > > can't actually do much with my laptop.
> > > >
> > > > OK, I investigated but now my TPM has returned to normal (as in
> > > > it passes the selftest immediately). There's clearly something
> > > > that makes it return TPM_RC_TESTING to every self test probe
> > > > for seconds at a time, but I don't know what it is. Sending a
> > > > different command seems to cause the problem to clear (Managed
> > > > to reproduce once with the patch to verify), so this is my
> > > > proposed fix. It's clearly nonsensical to detach the driver
> > > > because the self test still returns TPM_RC_TESTING,
> > > > so convert that return to a TPM_RC_SUCCESS on timeout. It
> > > > prints a warning message so we'll see it in the logs if it
> > > > causes problems. Given that this seems to be some type of
> > > > internal TPM issue, I don't believe changing the timings would
> > > > work.
> > >
> > > Maybe Mario can confirm this issue too, now that Linux 4.15 is
> > > released. Maybe he also has a way to get the Nuvoton people
> > > involved.
>
> James,
>
> Did you actually experiment with changing the timings?
No, I already said: waiting 2s for a device driver init is already too
great a burden on the boot sequence. I don't honestly think waiting
longer would help either ... 2s is a huge amount of time so there's
something else going on with the TPM.
James
> I was told that TPMs that are FIPS validated (such as that in the XPS
> 13) may take longer for the self tests to run.
>
> >
> > >
> > >
> > > >
> > > > ---
> > > >
> > > > diff --git a/drivers/char/tpm/tpm2-cmd.c
> > > > b/drivers/char/tpm/tpm2-cmd.c
> > > > index f40d20671a78..3e1b062d8888 100644
> > > > --- a/drivers/char/tpm/tpm2-cmd.c
> > > > +++ b/drivers/char/tpm/tpm2-cmd.c
> > > > @@ -872,6 +872,17 @@ static int tpm2_do_selftest(struct
> > > > tpm_chip *chip)
> > > > /* wait longer the next round */
> > > > delay_msec *= 2;
> > > > }
> > > > + if (rc == TPM2_RC_TESTING) {
> > > > + /*
> > > > + * A return of RC_TESTING means the TPM is still
> > > > + * running self tests. If one fails it will go into
> > > > + * failure mode and return RC_FAILED to every command,
> > > > + * so treat a still in testing return as a success
> > > > + * rather than causing a driver detach.
> > > > + */
> > > > + dev_err(&chip->dev,"TPM: Still in testing mode after
> > > > %dms,
> > > > continuing\n", delay_msec);
> > > > + rc = TPM2_RC_SUCCESS;
> > > > + }
> > > > return rc;
> > > > }
> > >
> > > Alexander replied the following in the other thread. No idea if
> > > you read
> > > it yet.
> > >
> > > >
> > > > The list of "A TPM error (2314) occurred continue selftest" is
> > > > caused
> > > > by my commit 125a2210541079e8e7c69e629ad06cabed788f8c ("tpm:
> > > > React
> > > > correctly to
> > > > RC_TESTING from TPM 2.0 self tests") [1]. 2314 is
> > > > TPM_RC_TESTING, so
> > > > the TPM
> > > > tells us that self-tests are still running in the background.
> > > > This
> > > > problem was
> > > > not visible in previous versions, since it (incorrectly)
> > > > ignored >
> > > > TPM_RC_TESTING.
> > >
> > > Maybe the commit should be reverted for now until this has
> > > cleared up
> > > for the Dell XPS 13 9360(?) to adhere to Linux' no regression
> > > policy.
> > >
> > >
> > > Kind regards,
> > >
> > > Paul
> > >
> > >
> > > PS: Alexander will also be at FOSDEM and mentioned your talk [2].
> > >
> > >
> > > [1]
> > >
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
> > commit?id=125
> > a2210541079e8e7c69e629ad06cabed788f8[2]
> > >
> > > https://lists.01.org/pipermail/tpm2/2018-January/000486.html
next prev parent reply other threads:[~2018-02-02 5:46 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-01 12:16 TPM selftest failure in 4.15 James Bottomley
2018-02-01 12:21 ` Paul Menzel
2018-02-01 12:42 ` James Bottomley
2018-02-01 15:24 ` James Bottomley
2018-02-01 17:40 ` Jason Gunthorpe
2018-02-01 18:46 ` James Bottomley
2018-02-01 18:59 ` Jason Gunthorpe
2018-02-01 20:00 ` James Bottomley
2018-02-01 20:35 ` Jason Gunthorpe
2018-02-01 21:06 ` James Bottomley
2018-02-08 13:10 ` Jarkko Sakkinen
2018-02-08 17:02 ` James Bottomley
2018-02-09 10:02 ` Jarkko Sakkinen
2018-02-09 10:30 ` Nayna Jain
2018-02-15 12:00 ` Jarkko Sakkinen
2018-02-09 11:47 ` Alexander Steffen
2018-02-15 12:12 ` Jarkko Sakkinen
2018-02-15 15:13 ` Mimi Zohar
2018-02-16 18:30 ` Alexander Steffen
2018-02-19 9:15 ` Nayna Jain
2018-02-19 22:26 ` Jason Gunthorpe
2018-02-16 18:27 ` Alexander Steffen
2018-02-20 13:05 ` Jarkko Sakkinen
2018-02-09 12:26 ` Mimi Zohar
2018-02-09 16:23 ` James Bottomley
2018-02-09 21:23 ` Mimi Zohar
2018-04-08 18:27 ` Ken Goldman
2018-02-09 16:18 ` James Bottomley
2018-02-08 17:27 ` Ken Goldman
2018-02-01 19:16 ` TPM selftest failure in 4.15 (Dell XPS 13, Nuvoton 6xx) Paul Menzel
2018-02-01 19:17 ` Paul Menzel
2018-02-01 20:12 ` Mario.Limonciello
2018-02-01 21:06 ` Mario.Limonciello
2018-02-01 22:22 ` Jason Gunthorpe
2018-02-02 5:46 ` James Bottomley
2018-02-02 5:46 ` James Bottomley [this message]
2018-02-08 16:53 ` Ken Goldman
2018-02-08 13:18 ` Jarkko Sakkinen
2018-02-08 13:05 ` TPM selftest failure in 4.15 Jarkko Sakkinen
2018-02-08 13:03 ` Jarkko Sakkinen
2018-02-08 12:49 ` Jarkko Sakkinen
2018-02-08 18:45 ` Ken Goldman
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=1517550361.3222.20.camel@HansenPartnership.com \
--to=james.bottomley@hansenpartnership.com \
--cc=Alexander.Steffen@infineon.com \
--cc=Mario.Limonciello@dell.com \
--cc=linux-integrity@vger.kernel.org \
--cc=pmenzel@molgen.mpg.de \
--cc=regressions@leemhuis.info \
/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.