• Jason A. Donenfeld's avatar
    tpm: Allow system suspend to continue when TPM suspend fails · 1382999a
    Jason A. Donenfeld authored
    TPM 1 is sometimes broken across system suspends, due to races or
    locking issues or something else that haven't been diagnosed or fixed
    yet, most likely having to do with concurrent reads from the TPM's
    hardware random number generator driver. These issues prevent the system
    from actually suspending, with errors like:
    
      tpm tpm0: A TPM error (28) occurred continue selftest
      ...
      tpm tpm0: A TPM error (28) occurred attempting get random
      ...
      tpm tpm0: Error (28) sending savestate before suspend
      tpm_tis 00:08: PM: __pnp_bus_suspend(): tpm_pm_suspend+0x0/0x80 returns 28
      tpm_tis 00:08: PM: dpm_run_callback(): pnp_bus_suspend+0x0/0x10 returns 28
      tpm_tis 00:08: PM: failed to suspend: error 28
      PM: Some devices failed to suspend, or early wake event detected
    
    This issue was partially fixed by 23393c64 ("char: tpm: Protect
    tpm_pm_suspend with locks"), in a last minute 6.1 commit that Linus took
    directly because the TPM maintainers weren't available. However, it
    seems like this just addresses the most common cases of the bug, rather
    than addressing it entirely. So there are more things to fix still,
    apparently.
    
    In lieu of actually fixing the underlying bug, just allow system suspend
    to continue, so that laptops still go to sleep fine. Later, this can be
    reverted when the real bug is fixed.
    
    Link: https://lore.kernel.org/lkml/7cbe96cf-e0b5-ba63-d1b4-f63d2e826efa@suse.cz/
    Cc: stable@vger.kernel.org # 6.1+
    Reported-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Acked-by: default avatarLuigi Semenzato <semenzato@chromium.org>
    Cc: Peter Huewe <peterhuewe@gmx.de>
    Cc: Jarkko Sakkinen <jarkko@kernel.org>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Johannes Altmanninger <aclopte@gmail.com>
    Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1382999a
tpm-interface.c 12.1 KB