On Fri, Feb 12, 2021 at 12:06:00PM +0100, Lukasz Majczak wrote:
There are missing calls to tpm_request_locality() before the calls to the tpm_get_timeouts() and tpm_tis_probe_irq_single() - both functions internally send commands to the tpm using tpm_tis_send_data() which in turn, at the very beginning, calls the tpm_tis_status(). This one tries to read TPM_STS register, what fails and propagates this error upward. The read fails due to lack of acquired locality, as it is described in TCG PC Client Platform TPM Profile (PTP) Specification, paragraph 6.1 FIFO Interface Locality Usage per Register, Table 39 Register Behavior Based on Locality Setting for FIFO
- a read attempt to TPM_STS_x Registers returns 0xFF in case of lack
of locality. The described situation manifests itself with the following warning trace:
[ 4.324298] TPM returned invalid status [ 4.324806] WARNING: CPU: 2 PID: 1 at drivers/char/tpm/tpm_tis_core.c:275 tpm_tis_status+0x86/0x8f
Tested on Samsung Chromebook Pro (Caroline), TPM 1.2 (SLB 9670) Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
Signed-off-by: Lukasz Majczak lma@semihalf.com Reviewed-by: Guenter Roeck linux@roeck-us.net
<formletter>
This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly.
</formletter>