From: "Jarkko Sakkinen" <jarkko@kernel.org>
To: "Jarkko Sakkinen" <jarkko@kernel.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>
Cc: "Thorsten Leemhuis" <regressions@leemhuis.info>,
"James Bottomley" <James.Bottomley@hansenpartnership.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Peter Huewe" <peterhuewe@gmx.de>,
"Jason Gunthorpe" <jgg@ziepe.ca>, "Jan Dabros" <jsd@semihalf.com>,
<regressions@lists.linux.dev>,
"LKML" <linux-kernel@vger.kernel.org>,
<linux-integrity@vger.kernel.org>,
"Dominik Brodowski" <linux@dominikbrodowski.net>,
"Herbert Xu" <herbert@gondor.apana.org.au>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Johannes Altmanninger" <aclopte@gmail.com>
Subject: Re: [REGRESSION] suspend to ram fails in 6.2-rc1 due to tpm errors
Date: Wed, 26 Apr 2023 02:34:25 +0300 [thread overview]
Message-ID: <CS68AWILHXS4.3M36M1EKZLUMS@suppilovahvero> (raw)
In-Reply-To: <CS48U6SYIBVB.V05DUEX5I01F@suppilovahvero>
On Sun Apr 23, 2023 at 6:34 PM EEST, Jarkko Sakkinen wrote:
> On Fri Apr 21, 2023 at 9:27 PM EEST, Jason A. Donenfeld wrote:
> > Did you use the patch I sent you and suspend and resume according to
> > the instructions I gave you? If not, I don't have much to add.
>
> Finally, I got it reproduced at my side with TPM 1.2:
>
> [ 0.379677] tpm_tis 00:00: 1.2 TPM (device-id 0x1, rev-id 1)
> [ 32.453447] tpm tpm0: tpm_transmit: tpm_recv: error -5
> [ 33.450601] tpm tpm0: Unable to read header
> [ 33.450607] tpm tpm0: tpm_transmit: tpm_recv: error -62
>
> I'll look at this further after I've sent v6.3 PR.
OK, so this gives the exact tpm_transmit call where it fails:
$ sudo bpftrace -e 'kprobe:tpm_transmit { @[kstack] = count(); }'
[sudo] password for jarkko:
Attaching 1 probe...
^C
@[
tpm_transmit+1
tpm1_pcr_read+177
tpm1_do_selftest+287
tpm_tis_resume+443
pnp_bus_resume+102
dpm_run_callback+81
device_resume+173
dpm_resume+238
dpm_resume_end+17
suspend_devices_and_enter+473
enter_state+563
pm_suspend+68
state_store+43
kobj_attr_store+15
sysfs_kf_write+59
kernfs_fop_write_iter+304
vfs_write+590
ksys_write+115
__x64_sys_write+25
do_syscall_64+88
entry_SYSCALL_64_after_hwframe+114
]: 1
@[
tpm_transmit+1
tpm1_do_selftest+179
tpm_tis_resume+443
pnp_bus_resume+102
dpm_run_callback+81
device_resume+173
dpm_resume+238
dpm_resume_end+17
suspend_devices_and_enter+473
enter_state+563
pm_suspend+68
state_store+43
kobj_attr_store+15
sysfs_kf_write+59
kernfs_fop_write_iter+304
vfs_write+590
ksys_write+115
__x64_sys_write+25
do_syscall_64+88
entry_SYSCALL_64_after_hwframe+114
]: 1
@[
tpm_transmit+1
tpm1_pm_suspend+203
tpm_pm_suspend+131
__pnp_bus_suspend+65
pnp_bus_suspend+19
dpm_run_callback+81
__device_suspend+329
dpm_suspend+432
dpm_suspend_start+155
suspend_devices_and_enter+370
enter_state+563
pm_suspend+68
state_store+43
kobj_attr_store+15
sysfs_kf_write+59
kernfs_fop_write_iter+304
vfs_write+590
ksys_write+115
__x64_sys_write+25
do_syscall_64+88
entry_SYSCALL_64_after_hwframe+114
]: 1
@[
tpm_transmit+1
tpm1_get_random+206
tpm_get_random+70
tpm_hwrng_read+21
hwrng_fillfn+234
kthread+230
ret_from_fork+41
]: 75897
So it is the very first PCR read in tpm1_do_selftest.
There is a bug at plain sight in tpm1_tis_resume(): before
tpm_tis_resume() calls tpm1_do_selftest(), it only requests
and relinquishes locality. This is not sufficient: it should
also disable clkrun protocol.
tpm1_do_selftest() is called also during the driver initialization
successfully, the difference being that clkrun protocol is disabled.
I'm compiling now a kernel with a test fix that calls tpm_chip_start()
and tpm_chip_stop() as a substitute for request/relinquish locality.
These should be used anyway instead of ad-hoc code.
BR, Jarkko
BR, Jarkko
next prev parent reply other threads:[~2023-04-25 23:34 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-28 20:22 [REGRESSION] suspend to ram fails in 6.2-rc1 due to tpm errors Vlastimil Babka
2022-12-28 23:07 ` James Bottomley
2022-12-29 4:03 ` Jason A. Donenfeld
2022-12-29 4:16 ` Jason A. Donenfeld
2023-01-05 13:59 ` Thorsten Leemhuis
2023-01-05 14:25 ` Vlastimil Babka
2023-01-05 14:47 ` [PATCH] tpm: Disable hwrng for TPM 1 if PM_SLEEP is enabled Jason A. Donenfeld
2023-01-05 14:53 ` Jason A. Donenfeld
2023-01-05 21:58 ` Linus Torvalds
2023-01-05 22:29 ` Jason A. Donenfeld
2023-01-06 3:01 ` [PATCH v2] tpm: Allow system suspend to continue when TPM suspend fails Jason A. Donenfeld
2023-01-06 16:01 ` Jason A. Donenfeld
[not found] ` <CAA25o9RGVbiXS6ne53gdM1K706zT=hm5c-KuMWrCA_CJtJDXdw@mail.gmail.com>
2023-01-06 17:16 ` Jason A. Donenfeld
2023-01-06 18:59 ` Linus Torvalds
2023-01-06 20:04 ` Luigi Semenzato
2023-01-06 22:28 ` Linus Torvalds
2023-01-09 16:05 ` Jason A. Donenfeld
2023-01-16 8:12 ` Jarkko Sakkinen
2023-01-16 14:03 ` Jason A. Donenfeld
2023-01-21 0:07 ` Jarkko Sakkinen
2023-01-16 11:44 ` Jarkko Sakkinen
2023-01-16 14:00 ` Vlastimil Babka
2023-01-21 0:03 ` Jarkko Sakkinen
2023-01-05 15:17 ` [REGRESSION] suspend to ram fails in 6.2-rc1 due to tpm errors James Bottomley
2023-01-05 15:27 ` Jason A. Donenfeld
2023-01-05 15:32 ` Jason A. Donenfeld
2023-01-09 16:08 ` Jason A. Donenfeld
2023-01-10 17:19 ` Vlastimil Babka
2023-01-20 23:47 ` Jarkko Sakkinen
2023-03-14 9:35 ` Thorsten Leemhuis
2023-03-14 12:19 ` Jarkko Sakkinen
2023-03-14 12:47 ` Jason A. Donenfeld
2023-03-14 13:05 ` Jarkko Sakkinen
2023-03-14 13:08 ` Jarkko Sakkinen
2023-03-14 13:53 ` Jason A. Donenfeld
2023-03-14 14:23 ` Jarkko Sakkinen
2023-04-21 15:03 ` Jarkko Sakkinen
2023-04-21 18:27 ` Jason A. Donenfeld
2023-04-23 15:34 ` Jarkko Sakkinen
2023-04-25 23:34 ` Jarkko Sakkinen [this message]
2023-04-26 1:32 ` Jason A. Donenfeld
2023-04-26 16:07 ` Jarkko Sakkinen
2023-04-26 17:00 ` Jarkko Sakkinen
2023-01-04 9:10 ` Johannes Altmanninger
2023-01-16 11:30 ` 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=CS68AWILHXS4.3M36M1EKZLUMS@suppilovahvero \
--to=jarkko@kernel.org \
--cc=James.Bottomley@hansenpartnership.com \
--cc=Jason@zx2c4.com \
--cc=aclopte@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=jgg@ziepe.ca \
--cc=jsd@semihalf.com \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=peterhuewe@gmx.de \
--cc=regressions@leemhuis.info \
--cc=regressions@lists.linux.dev \
--cc=torvalds@linux-foundation.org \
--cc=vbabka@suse.cz \
/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.