From 35135d7b29313df22c3bc1e8773954b5e36cebe3 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 21 Dec 2022 21:16:40 +0100 Subject: [PATCH] system: disable interrupts in esp_restart_noos_dig --- components/esp_system/esp_system.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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);