• Tyler Hicks's avatar
    optee: Refuse to load the driver under the kdump kernel · adf752af
    Tyler Hicks authored
    Fix a hung task issue, seen when booting the kdump kernel, that is
    caused by all of the secure world threads being in a permanent suspended
    state:
    
     INFO: task swapper/0:1 blocked for more than 120 seconds.
           Not tainted 5.4.83 #1
     "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
     swapper/0       D    0     1      0 0x00000028
     Call trace:
      __switch_to+0xc8/0x118
      __schedule+0x2e0/0x700
      schedule+0x38/0xb8
      schedule_timeout+0x258/0x388
      wait_for_completion+0x16c/0x4b8
      optee_cq_wait_for_completion+0x28/0xa8
      optee_disable_shm_cache+0xb8/0xf8
      optee_probe+0x560/0x61c
      platform_drv_probe+0x58/0xa8
      really_probe+0xe0/0x338
      driver_probe_device+0x5c/0xf0
      device_driver_attach+0x74/0x80
      __driver_attach+0x64/0xe0
      bus_for_each_dev+0x84/0xd8
      driver_attach+0x30/0x40
      bus_add_driver+0x188/0x1e8
      driver_register+0x64/0x110
      __platform_driver_register+0x54/0x60
      optee_driver_init+0x20/0x28
      do_one_initcall+0x54/0x24c
      kernel_init_freeable+0x1e8/0x2c0
      kernel_init+0x18/0x118
      ret_from_fork+0x10/0x18
    
    The invoke_fn hook returned OPTEE_SMC_RETURN_ETHREAD_LIMIT, indicating
    that the secure world threads were all in a suspended state at the time
    of the kernel crash. This intermittently prevented the kdump kernel from
    booting, resulting in a failure to collect the kernel dump.
    
    Make kernel dump collection more reliable on systems utilizing OP-TEE by
    refusing to load the driver under the kdump kernel.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarTyler Hicks <tyhicks@linux.microsoft.com>
    Reviewed-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
    Reviewed-by: default avatarSumit Garg <sumit.garg@linaro.org>
    Signed-off-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
    adf752af
core.c 18.4 KB