diff --git a/components/hal/esp32h4/include/hal/cpu_utility_ll.h b/components/hal/esp32h4/include/hal/cpu_utility_ll.h index 6f4f0b5d2f..10a2fed2e8 100644 --- a/components/hal/esp32h4/include/hal/cpu_utility_ll.h +++ b/components/hal/esp32h4/include/hal/cpu_utility_ll.h @@ -32,11 +32,12 @@ FORCE_INLINE_ATTR void cpu_utility_ll_stall_cpu(uint32_t cpu_no) { if (cpu_no == 0) { HAL_FORCE_MODIFY_U32_REG_FIELD(LP_AON.cpucore_cfg, aon_cpu_core0_sw_stall, 0x86); - while(!REG_GET_BIT(HP_SYSTEM_CORE_DEBUG_RUNSTALL_CONF_REG, HP_SYSTEM_CORE0_RUNSTALLED)); } else { HAL_FORCE_MODIFY_U32_REG_FIELD(LP_AON.cpucore_cfg, aon_cpu_core1_sw_stall, 0x86); - while(!REG_GET_BIT(HP_SYSTEM_CORE_DEBUG_RUNSTALL_CONF_REG, HP_SYSTEM_CORE1_RUNSTALLED)); } + // We do not check stalled status in HP_SYSTEM_CORE_DEBUG_RUNSTALL_CONF_REG here because + // it will not be set if the stalled core was in WFI when the stall happens, thus any check + // is unreliable } FORCE_INLINE_ATTR void cpu_utility_ll_unstall_cpu(uint32_t cpu_no)