Kernel Bug Tracker – Bug 20132
Suspend fails due to tpm_tis driver
Last modified: 2013-12-10 22:18:23 UTC
Suspend has failed on this Sony Vaio SZ650 since Ubuntu's 2.6.32-23 kernel (-22 was fine). Building from Linus' mainline (2.6.36-rc7) shows the following error during suspend. Removing the tpm_tis module (sudo rmmod tpm_tis) prior to suspend allows normal suspend-resume.
kern.log (suspend initiated at 10:45:05):
Oct 12 10:47:09 doris kernel: [ 269.390216] usb usb2: suspend, may wakeup
Oct 12 10:47:09 doris kernel: [ 390.130107] tpm_tis 00:09: tpm_transmit: tpm_send: error -62
Oct 12 10:47:09 doris kernel: [ 390.130117] legacy_suspend(): pnp_bus_suspend+0x0/0x90 returns -62
Oct 12 10:47:09 doris kernel: [ 390.130122] PM: Device 00:09 failed to suspend: error -62
Oct 12 10:47:09 doris kernel: [ 390.130125] PM: Some devices failed to suspend
Oct 12 10:47:09 doris kernel: [ 390.130177] scsi host0: resume
This may be related to
The Launchpad report is here:
What mainline kernel does 2.6.32-23 correspond to?
Rafael - not sure exactly which mainline. Probably an rc with lots of cherry-picks. I think this is the git tree tracking the released kernels for lucid:
And my bug turned up between these two tagged releases:
The last working kernel reports this:
mdoube@doris:~$ uname -a
Linux doris 2.6.32-22-generic #36-Ubuntu SMP Thu Jun 3 19:31:57 UTC 2010 x86_64 GNU/Linux
mdoube@doris:~$ lsmod | grep tpm
tpm_infineon 9217 0
tpm 15780 1 tpm_infineon
tpm_bios 6402 1 tpm
And this commit was merged after -22.36 and before -23.37
And the current kernel reports this:
mdoube@doris:~$ uname -a
Linux doris 2.6.35-22-generic #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 x86_64 GNU/Linux
mdoube@doris:~$ lsmod |grep tpm
tpm_tis 16289 1
tpm 16013 1 tpm_tis
tpm_bios 6426 1 tpm
This Vaio has an Infineon TPM chip, so it looks like tpm_tis is getting loaded when tpm_infineon should be instead.
If I rmmod tpm_tis and modprobe tpm_infineon, not only does suspend work properly, but fprint (fingerprint scanner) works properly too, which it hasn't done before.
This looks like a user space problem to me, apparently it loads the wrong
module at startup.
According to the developers, tpm_tis is supposed to work with all 1.2 TPMs, complying with the TIS specification (that determines how the 1.2 TPMs should interface with PC platforms), so it looks like a bug in this kernel module, rather than the wrong module being loaded.
OK (Are you actually sure that your TPM complies with the spec?)
The Windows driver claims to be. I'm struggling to get information on the Linux side (I dual boot Ubuntu with XP).
Win driver reports:
Trusted Platform Module:
TCG Spec. Version = 1.2
Vendor = Infineon Technologies AG
FW Version = 1.02
I'm unable to communicate with the TPM to get further debug info, following Rajiv Andrade's instructions:
mdoube@doris:~$ sudo rmmod tpm_tis
[sudo] password for mdoube:
mdoube@doris:~$ sudo modprobe tpm_infineon
mdoube@doris:~$ cat /proc/interrupts | grep tpm
mdoube@doris:~$ tcsd -f&
mdoube@doris:~$ TCSD ERROR: fopen(/etc/tcsd.conf): Permission denied
+ Exit 4 tcsd -f
mdoube@doris:~$ sudo tcsd -f&
mdoube@doris:~$ TCSD TDDL ERROR: Could not find a device to open!
in another tty:
mdoube@doris:~$ sudo tpm_version
Tspi_Context_Connect failed: 0x00003011 - layer=tsp, code=0011 (17), Communication failure
Created attachment 38072 [details]
DSDT of Vaio SZ650
Apparently the DSDT can be useful for TPM driver development, so I attach it here
Is the problem still present in 2.6.37?
Unfortunately my TPM appears to have completely died. It's missing from dmesg and no TPM modules get loaded during boot. Windows also complains, and when I try to clear the TPM information from BIOS, no confirmation screen appears on reboot as it normally would.
I didn't see any commits to tpm_tis that would fix this in 2.6.37, but it's possible that the whole bug was due to a flaky chip rather than a programming error.
OK, closing as unreproducible.
Just had an email from another Vaio user with the same bug. Alex Porras reports that:
Adding the following line to my grub's kernel config fixed it:
I put it in my /etc/default/grub file:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash tpm_tis.interrupts=0"
This bug at RedHat has some more info:
A Thinkpad X200 has been reported to be affected in the downstream bug report.
The integrated smartcard reader of my Dell Latitude E6400 is somehow connected to the TPM and cannot be used without enabling it. Since this point in time I was not able to suspend my laptop anymore. Blacklisting the tpm_tis module solved it for me. I am on Ubuntu 12.04 with kernel 3.2.0-32-generic.
What is the current status of this bug?
(In reply to comment #17)
> The integrated smartcard reader of my Dell Latitude E6400 is somehow connected
> to the TPM and cannot be used without enabling it. Since this point in time I
> was not able to suspend my laptop anymore. Blacklisting the tpm_tis module
> solved it for me. I am on Ubuntu 12.04 with kernel 3.2.0-32-generic.
Same here: 3.2.0-26-generic x86_64 kernel with Ubuntu 12.04 on a Latitude E6400. The tpm_tis problem just reappeared after I hadn't seen it for quite some time.