tpm: spi: do not call blocking ops when !TASK_RUNNING; during shutdown

Peng Fan peng.fan at nxp.com
Tue Apr 21 02:04:43 PDT 2026


> 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



More information about the linux-arm-kernel mailing list