> Subject: tpm: spi: do not call blocking ops when !TASK_RUNNING;
> during shutdown
>
> Hi,
> we use a custom i.MX93 board, which based on Phytec Phycore i.MX93
> with a TPM connected via SPI. If I enable
> CONFIG_DEBUG_ATOMIC_SLEEP=y in our kernel config with mainline
> kernel 6.18.23 and reboot our board, I will get the following warning:
> ffff0000000d8000
The issue seems at drivers/char/tpm/tpm_tis_core.c
94 rc = wait_event_interruptible_timeout(*queue,
95 wait_for_tpm_stat_cond(chip, sts_mask,
check_cancel,
96 &canceled),
97 timeout);
wait_event_interruptible_timeout set task to !TASK_RUNNING,
but wait_for_tpm_stat_cond still calls into mutex_lock.
Regards
Peng
> [ 43.422135] Call trace:
> [ 43.424570] __might_sleep+0x74/0x7c (P)
> [ 43.428487] mutex_lock+0x24/0x80
> [ 43.431797] spi_bus_lock+0x20/0x50
> [ 43.435281] tpm_tis_spi_transfer_full+0x70/0x2c4
> [ 43.439979] tpm_tis_spi_read_bytes+0x3c/0x48
> [ 43.444321] tpm_tis_status+0x58/0xf8
> [ 43.447978] wait_for_tpm_stat_cond+0x30/0x90
> [ 43.452329] wait_for_tpm_stat+0x1cc/0x2e0
> [ 43.456419] tpm_tis_send_data+0xdc/0x334
> [ 43.460423] tpm_tis_send_main+0x74/0x160
> [ 43.464427] tpm_tis_send+0xd4/0x13c
> [ 43.467998] tpm_transmit+0xc4/0x3c4
> [ 43.471569] tpm_transmit_cmd+0x38/0xd4
> [ 43.475399] tpm2_shutdown+0x6c/0xa4
> [ 43.478970] tpm_class_shutdown+0x60/0x88
> [ 43.482974] device_shutdown+0x130/0x25c
> [ 43.486891] kernel_restart+0x44/0xa4
> [ 43.490549] __do_sys_reboot+0x114/0x254
> [ 43.494466] __arm64_sys_reboot+0x24/0x30
> [ 43.498470] invoke_syscall+0x48/0x10c
> [ 43.502214] el0_svc_common.constprop.0+0x40/0xe0
> [ 43.506911] do_el0_svc+0x1c/0x28
> [ 43.510222] el0_svc+0x34/0xec
> [ 43.513273] el0t_64_sync_handler+0xa0/0xe4
> [ 43.517441] el0t_64_sync+0x198/0x19c
>
> Best regards