Re: [tpmdd-devel] Regression between Linux 3.16 and 4.8/4.9 on Lenovo X60 with coreboot

From: Paul Menzel
Date: Thu Apr 06 2017 - 14:26:36 EST


On 2017-04-06 18:55, Jason Gunthorpe wrote:
On Thu, Apr 06, 2017 at 08:18:33AM +0200, Paul Menzel wrote:

Indeed, that improves the situation. I still need to pass `force=1` to the
module to get `/dev/tpm0`. No idea, why itâs not in included in Linux 4.9
yet.

Fair point.. Jarkko - could you forward that patch to -stable?

$ journalctl -k -o cat | grep tpm
tpm_tis tpm_tis: 1.2 TPM (device-id 0x3202, rev-id 5)
tpm tpm0: Issuing TPM_STARTUP
tpm tpm0: [Hardware Error]: Adjusting reported timeouts: A 10000->10000us B
10000->10000us C 0->752000us D 0->752000us

There could be more relavent kernel messages than this, try
grep -i tpm

?

At least I donât spot more messages.

```
$ journalctl -b -3 -o cat | grep -i -e "Linux version" -e tpm
Linux version 4.11.0-rc5+ (root@d44d03a193d6) (gcc version 6.3.0 20170321 (Debian 6.3.0-10) ) #2 SMP Tue Apr 4 21:07:08 UTC 2017
joey : TTY=pts/6 ; PWD=/home/joey ; USER=root ; COMMAND=/usr/bin/apt install tpm-tools
new user: name=tss, UID=123, GID=137, home=/var/lib/tpm, shell=/bin/false
joey : TTY=pts/6 ; PWD=/home/joey ; USER=root ; COMMAND=/sbin/modprobe -r tpm_tis tpm
joey : TTY=pts/6 ; PWD=/home/joey ; USER=root ; COMMAND=/sbin/modprobe tpm_tis force=1
tpm_tis tpm_tis: 1.2 TPM (device-id 0x3202, rev-id 5)
tpm tpm0: Issuing TPM_STARTUP
tpm tpm0: [Hardware Error]: Adjusting reported timeouts: A 10000->10000us B 10000->10000us C 0->752000us D 0->752000us
```

So do you have an idea, what âACPI requirementsâ changed in the `tpm` module
since Linux 3.16 to be loaded automatically?

We added direct ACPI binding to the driver in addition to PNP, so if
you have an ACPI table it goes down that path and does some additional
validation of what is in the TPM. The BIOS must provide a
acpi_dev_resource_memory and a ACPI_SIG_TPM2 for the ACPI entry at a
minimum.

Is it correct, that this is added in/for 4.11, so just recently? Testing with Linux 4.10.8, everything is detected just fine.

```
$ journalctl -k -o cat | grep -i tpm
tpm_tis 00:08: 1.2 TPM (device-id 0x3202, rev-id 5)
tpm tpm0: A TPM error (38) occurred attempting to determine the timeouts
tpm tpm0: Issuing TPM_STARTUP
tpm tpm0: [Hardware Error]: Adjusting reported timeouts: A 10000->10000us B 10000->10000us C 0->752000us D 0->752000us
```

There are FW_BUG prints if those fail, so check your dmesg closely?

http://lxr.free-electrons.com/source/drivers/char/tpm/tpm_tis.c#L250

If not, can you annotate in some printk's into tpm_tis_acpi_init and
recompile/re-test?

If nothing comes to mind with the new information above, then I could do that. But I donât know, if Iâll have time in the next two weeks for that.


Kind regards,

Paul