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

From: Vlastimil Babka
Date: Thu Jan 05 2023 - 09:26:53 EST


On 1/5/23 14:59, 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? And if so: how can we get this unstuck to get this
> regression solved?
>
> Side note: I wonder if the problem that Johannes reported yesterday in
> this thread (
> https://lore.kernel.org/all/Y7VCcgHUC6JtnO2b@xxxxxxxxx/
> ) is related or something else, as it seems his issue happens with 6.1,
> while Vlastimil's problems should be fixed there. Or am I missing something?

Yaeh, as Jason noted, the fix in 6.1 probably covered only the most common
race scenario, yet other(s) were still possible, just more rare. So most
likely I just happened not to trigger it anymore with 6.1, only after
switching to 6.2 - but it's not really a new bug in 6.2. And 6.1 also only
started to exhibit it because hwrng started using the tpm, which would just
sit unused before that.

> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
> --
> Everything you wanna know about Linux kernel regression tracking:
> https://linux-regtracking.leemhuis.info/about/#tldr
> If I did something stupid, please tell me, as explained on that page.
>