Bug 20132

Summary: Suspend fails due to tpm_tis driver
Product: Drivers Reporter: Michael Doube (michael)
Component: OtherAssignee: drivers_other
Status: ASSIGNED ---    
Severity: normal CC: alan, horst-bugme-osdl, jarkko.sakkinen, kernel, mpagano, nfilus, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.2 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216, 14885    
Attachments: DSDT of Vaio SZ650

Description Michael Doube 2010-10-12 10:16:42 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
https://bugzilla.kernel.org/show_bug.cgi?id=16256

The Launchpad report is here:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/602049
Comment 1 Rafael J. Wysocki 2010-10-12 18:34:50 UTC
What mainline kernel does 2.6.32-23 correspond to?
Comment 2 Michael Doube 2010-10-13 07:52:06 UTC
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:

git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git

And my bug turned up between these two tagged releases:

Ubuntu-2.6.32-22.36
Ubuntu-2.6.32-23.37
Comment 3 Michael Doube 2010-10-13 08:07:09 UTC
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
http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-lucid.git;a=commit;h=e125c3a4937016ca98f8cb22f359a4c1a390a2e7
Comment 4 Michael Doube 2010-10-13 08:34:41 UTC
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.
Comment 5 Michael Doube 2010-10-13 08:56:43 UTC
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.
Comment 6 Rafael J. Wysocki 2010-10-13 20:09:04 UTC
This looks like a user space problem to me, apparently it loads the wrong
module at startup.
Comment 7 Michael Doube 2010-10-14 06:16:22 UTC
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.
Comment 8 Rafael J. Wysocki 2010-10-14 09:44:16 UTC
OK (Are you actually sure that your TPM complies with the spec?)
Comment 9 Michael Doube 2010-10-14 12:37:21 UTC
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
Comment 10 Michael Doube 2010-11-24 14:41:01 UTC
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&
[1] 23866
mdoube@doris:~$ TCSD ERROR: fopen(/etc/tcsd.conf): Permission denied
^C
[1]+  Exit 4                  tcsd -f
mdoube@doris:~$ sudo tcsd -f&
[1] 24391
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
Comment 11 Michael Doube 2010-11-24 17:11:44 UTC
Created attachment 38072 [details]
DSDT of Vaio SZ650

Apparently the DSDT can be useful for TPM driver development, so I attach it here
Comment 12 Rafael J. Wysocki 2011-01-16 22:40:36 UTC
Is the problem still present in 2.6.37?
Comment 13 Michael Doube 2011-01-17 10:19:33 UTC
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.
Comment 14 Rafael J. Wysocki 2011-01-17 22:24:23 UTC
OK, closing as unreproducible.
Comment 15 Michael Doube 2011-01-20 08:55:04 UTC
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:

tpm_tis.interrupts=0
 
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:
https://bugzilla.redhat.com/show_bug.cgi?id=530393
Comment 16 Michael Doube 2011-01-30 18:07:58 UTC
A Thinkpad X200 has been reported to be affected in the downstream bug report.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/602049/comments/85
Comment 17 Nikolaus 2012-10-11 09:34:21 UTC
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?
Comment 18 Horst Schirmeier 2012-10-21 20:12:24 UTC
(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.
Comment 19 jarkko.sakkinen 2016-08-22 13:48:48 UTC
Is this bug still valid? If not, I will close it down. Thanks.