On Tue, 27 Jan 2015, Jarkko Sakkinen wrote:
> Fixed suspend/resume paths for TPM 2.0 and consolidated all the
> associated code to the tpm_pm_suspend() and tpm_pm_resume()
> functions. Resume path should be handled by the firmware, i.e.
> Startup(CLEAR) for hibernate and Startup(STATE) for suspend.
>
> There might be some non-PC embedded devices in the future where
> Startup() is not the handled by the FW but fixing the code for
> those IMHO should be postponed until there is hardware available
> to test the fixes although extra Startup in the driver code is
> essentially a NOP.
>
> Reported-by: Peter Hüwe <[email protected]>
> Signed-off-by: Jarkko Sakkinen <[email protected]>
> ---
...
> --- a/drivers/char/tpm/tpm_tis.c
> +++ b/drivers/char/tpm/tpm_tis.c
> @@ -865,25 +865,23 @@ static void tpm_tis_reenable_interrupts(struct tpm_chip
> *chip)
> static int tpm_tis_resume(struct device *dev)
> {
...
> + /* TPM 1.2 requires self-test on resume. */
> + if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
> + ret = tpm_do_selftest(chip);
> + if (ret < 0)
> + return ret;
Just to note, the return value from tpm_do_selftest() on TPM 1.2 chips was
previously ignored. Mine does return 0.
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
TrouSerS-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-tech