diff --git a/components/esp_system/esp_system.c b/components/esp_system/esp_system.c index 5c16c09d12..7df8a75bf9 100644 --- a/components/esp_system/esp_system.c +++ b/components/esp_system/esp_system.c @@ -30,6 +30,15 @@ static shutdown_handler_t shutdown_handlers[SHUTDOWN_HANDLERS_NO]; void IRAM_ATTR esp_restart_noos_dig(void) { + // In case any of the calls below results in re-enabling of interrupts + // (for example, by entering a critical section), disable all the + // interrupts (e.g. from watchdogs) here. +#ifdef CONFIG_IDF_TARGET_ARCH_RISCV + rv_utils_intr_global_disable(); +#else + xt_ints_off(0xFFFFFFFF); +#endif + // make sure all the panic handler output is sent from UART FIFO if (CONFIG_ESP_CONSOLE_UART_NUM >= 0) { esp_rom_uart_tx_wait_idle(CONFIG_ESP_CONSOLE_UART_NUM);