BACKPORT: FROMLIST: tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations

TPM 2.0 Shutdown involve sending TPM2_Shutdown to TPM chip and disabling
future TPM operations. TPM 1.2 behavior was different, future TPM
operations weren't disabled, causing rare issues. This patch ensures
that future TPM operations are disabled.

Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com>
[dianders: resolved merge conflicts with mainline]
Signed-off-by: Douglas Anderson <dianders@chromium.org>
(am from https://lore.kernel.org/patchwork/patch/1086755/)
(also found at https://lkml.kernel.org/r/20190610220118.5530-1-dianders@chromium.org)

Conflicts:
   drivers/char/tpm/tpm-chip.c
...upstream has commit a3fbfae82b4c ("tpm: take TPM chip power gating
out of tpm_transmit()") and commit 719b7d81f204 ("tpm: introduce
tpm_chip_start() and tpm_chip_stop()") and it didn't seem like a good
idea to backport 17 patches to avoid the conflict.  ;-)

BUG=chromium:819268
TEST=mostly probabilistic due to shutdown behavior
echo devices>/sys/power/pm_test
cat /sys/class/tpm/tpm0/owned & cat /sys/class/tpm/tpm0/owned &
echo mem>/sys/power/state &
cat /sys/class/tpm/tpm0/owned & cat /sys/class/tpm/tpm0/owned &

should return error once in a while

Change-Id: Id63b2d77bcca99f178f4f574390a4d1b8d958e10
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1495114
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Andrey Pronin <apronin@chromium.org>
(cherry picked from commit 4465bd5a47080e477eecf4d2979c5c73280b5a5b)
Reviewed-on: https://chromium-review.googlesource.com/1657342
Tested-by: Ross Zwisler <zwisler@chromium.org>
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Ross Zwisler <zwisler@chromium.org>
(cherry picked from commit 79dff2e6e4e2d93d7d57ef6f94da78092aa50398)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1669791
1 file changed