Re: [REGRESSION] suspend to ram fails in 6.2-rc1 due to tpm errors

From: Jason A. Donenfeld
Date: Thu Jan 05 2023 - 10:27:20 EST


On Thu, Jan 05, 2023 at 10:17:57AM -0500, James Bottomley wrote:
> On Thu, 2023-01-05 at 14:59 +0100, Thorsten Leemhuis wrote:
> > On 29.12.22 05:03, Jason A. Donenfeld wrote:
> > > On Wed, Dec 28, 2022 at 06:07:25PM -0500, James Bottomley wrote:
> > > > On Wed, 2022-12-28 at 21:22 +0100, Vlastimil Babka wrote:
> > > > > Ugh, while the problem [1] was fixed in 6.1, it's now happening
> > > > > again on the T460 with 6.2-rc1. Except I didn't see any oops
> > > > > message or "tpm_try_transmit" error this time. The first
> > > > > indication of a problem is this during a resume from suspend to
> > > > > ram:
> > > > >
> > > > > tpm tpm0: A TPM error (28) occurred continue selftest
> > > > >
> > > > > and then periodically
> > > > >
> > > > > tpm tpm0: A TPM error (28) occurred attempting get random
> > > >
> > > > That's a TPM 1.2 error which means the TPM failed the selftest. 
> > > > The original problem was reported against TPM 2.0  because of a
> > > > missing try_get_ops().
> > >
> > > No, I'm pretty sure the original bug, which was fixed by "char:
> > > tpm: Protect tpm_pm_suspend with locks" regards 1.2 as well,
> > > especially considering it's the same hardware from Vlastimil
> > > causing this. I also recall seeing this in 1.2 when I ran this with
> > > the TPM emulator. So that's not correct.
> >
> > James, are you or some other TPM developer looking into this? Or is
> > this deadlocked now?
>
> Not really: TPM 1.2 way predates my interest in the TPM subsystem, and
> I've only ever done patches to 2.0. I can look at the paths
> theoretically, but I don't have any hardware. Self Test failures tend
> to be hardware specific, so even poking around in the emulator is
> unlikely to give what might be the cause.
>
> > And if so: how can we get this unstuck to get this regression
> > solved?
>
> One of the TPM maintainers with hardware (possibly the specific TPM ...
> what is it, by the way?) needs to get involved.

I already wrote in my last email [1] that this simply isn't the case.
The issue reproduces in QEMU + the emulator. It's far more likely to be
a locking/race situation [2] than some kind of obscure hardware bug.

Jason

[1] https://lore.kernel.org/lkml/Y60RoP77HnwaukEA@xxxxxxxxx/
[2] https://lore.kernel.org/lkml/Y60Uu8HcGyXasnOO@xxxxxxxxx/