On Thu, Mar 28, 2019 at 06:19:26PM +0100, Domenico Andreoli wrote: > 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> Thank you! I'll do a PR to James during the weekend. /Jarkko