From: Greg KH on
2.6.33-stable review patch. If anyone has any objections, please let us know.


From: Rajiv Andrade <srajiv(a)>

commit 59f6fbe4291fcc078ba26ce4edf8373a7620a13a upstream.

Fix subsequent suspends by issuing tpm_continue_selftest during resume.
Otherwise, the tpm chip seems to be not fully initialized and will reject
the save state command during suspend, thus preventing the whole system
to suspend.


Signed-off-by: Helmut Schaa <helmut.schaa(a)>
Signed-off-by: Rajiv Andrade <srajiv(a)>
Cc: James Morris <jmorris(a)>
Cc: Debora Velarde <debora(a)>
Cc: David Safford <safford(a)>
Signed-off-by: Andrew Morton <akpm(a)>
Signed-off-by: James Morris <jmorris(a)>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)>

drivers/char/tpm/tpm_tis.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

--- a/drivers/char/tpm/tpm_tis.c
+++ b/drivers/char/tpm/tpm_tis.c
@@ -622,7 +622,14 @@ static int tpm_tis_pnp_suspend(struct pn

static int tpm_tis_pnp_resume(struct pnp_dev *dev)
- return tpm_pm_resume(&dev->dev);
+ struct tpm_chip *chip = pnp_get_drvdata(dev);
+ int ret;
+ ret = tpm_pm_resume(&dev->dev);
+ if (!ret)
+ tpm_continue_selftest(chip);
+ return ret;

static struct pnp_device_id tpm_pnp_tbl[] __devinitdata = {

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)
More majordomo info at
Please read the FAQ at