On Fri, Mar 22, 2019 at 12:51:20PM +0200, Jarkko Sakkinen wrote: > tpm_chip_start/stop() should be also called for TPM 1.x devices on > suspend. Add that functionality back. Do not lock the chip because > it is unnecessary as there are no multiple threads using it when > doing the suspend. > > Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()") > Reported-by: Paul Zimmerman <pauldzim@xxxxxxxxx> > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx> > --- > drivers/char/tpm/tpm-interface.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > index 83ece5639f86..ae1030c9b086 100644 > --- a/drivers/char/tpm/tpm-interface.c > +++ b/drivers/char/tpm/tpm-interface.c > @@ -402,15 +402,13 @@ int tpm_pm_suspend(struct device *dev) > if (chip->flags & TPM_CHIP_FLAG_ALWAYS_POWERED) > return 0; > > - if (chip->flags & TPM_CHIP_FLAG_TPM2) { > - mutex_lock(&chip->tpm_mutex); > - if (!tpm_chip_start(chip)) { > + if (!tpm_chip_start(chip)) { > + if (chip->flags & TPM_CHIP_FLAG_TPM2) > tpm2_shutdown(chip, TPM2_SU_STATE); > - tpm_chip_stop(chip); > - } > - mutex_unlock(&chip->tpm_mutex); > - } else { > - rc = tpm1_pm_suspend(chip, tpm_suspend_pcr); > + else > + rc = tpm1_pm_suspend(chip, tpm_suspend_pcr); > + > + tpm_chip_stop(chip); > } > > return rc; Tested-by: Domenico Andreoli <domenico.andreoli@xxxxxxxxx> -- 3B10 0CA1 8674 ACBA B4FE FCD2 CE5B CF17 9960 DE13