Merge branch 'bugfix/fix_esp32_bt_sw_intr_v5.1' into 'release/v5.1'

fix(bt): fixed sw_intr issue with BT register or trigger error core on ESP32 (v5.1)

See merge request espressif/esp-idf!41637
This commit is contained in:
Wang Meng Yang
2025-09-18 17:47:10 +08:00

View File

@@ -874,9 +874,22 @@ static int IRAM_ATTR cause_sw_intr_to_core_wrapper(int core_id, int intr_no)
#if CONFIG_FREERTOS_UNICORE
cause_sw_intr((void *)intr_no);
#else /* CONFIG_FREERTOS_UNICORE */
#if CONFIG_FREERTOS_SMP
uint32_t state = portDISABLE_INTERRUPTS();
#else
uint32_t state = portSET_INTERRUPT_MASK_FROM_ISR();
#endif
if (xPortGetCoreID() == core_id) {
cause_sw_intr((void *)intr_no);
#if CONFIG_FREERTOS_SMP
portRESTORE_INTERRUPTS(state);
} else {
portRESTORE_INTERRUPTS(state);
#else
portCLEAR_INTERRUPT_MASK_FROM_ISR(state);
} else {
portCLEAR_INTERRUPT_MASK_FROM_ISR(state);
#endif
err = esp_ipc_call(core_id, cause_sw_intr, (void *)intr_no);
}
#endif /* !CONFIG_FREERTOS_UNICORE */
@@ -1497,11 +1510,7 @@ static void hli_queue_setup_pinned_to_core(int core_id)
#if CONFIG_FREERTOS_UNICORE
hli_queue_setup_cb(NULL);
#else /* CONFIG_FREERTOS_UNICORE */
if (xPortGetCoreID() == core_id) {
hli_queue_setup_cb(NULL);
} else {
esp_ipc_call(core_id, hli_queue_setup_cb, NULL);
}
esp_ipc_call_blocking(core_id, hli_queue_setup_cb, NULL);
#endif /* !CONFIG_FREERTOS_UNICORE */
}
#endif /* CONFIG_BTDM_CTRL_HLI */