circuitpython/ports
Angus Gratton cfa55b4ca1 rp2: Fix recursive atomic sections when core1 is active.
mp_thread_begin_atomic_section() is expected to be recursive (i.e. for
nested machine.disable_irq() calls, or if Python code calls disable_irq()
and then the Python runtime calls mp_handle_pending() which also enters an
atomic section to check the scheduler state).

On rp2 when not using core1 the atomic sections are recursive.

However when core1 was active (i.e. _thread) then there was a bug that
caused the core to live-lock if an atomic section recursed.

Adds a test case specifically for mutual exclusion and recursive atomic
sections when using two threads. Without this fix the test immediately
hangs on rp2.

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-06-25 11:01:25 +10:00
..
bare-arm shared/libc/string0: Don't deref args for n==0 case. 2023-11-07 16:01:50 +11:00
cc3200 cc3200/mods: Implement network.ipconfig and network.WLAN.ipconfig. 2024-06-04 12:45:01 +10:00
embed all: Prune trailing whitespace. 2024-03-07 16:25:17 +11:00
esp32 esp32/network_ppp: Implement network.PPP.ipconfig method. 2024-06-04 12:45:01 +10:00
esp8266 esp8266/network_wlan: Implement network.ipconfig and WLAN.ipconfig. 2024-06-04 12:45:01 +10:00
mimxrt shared/tinyusb: Buffer startup CDC data to send to host on connection. 2024-06-04 17:49:19 +10:00
minimal minimal: Use printf instead of echo -e. 2024-02-15 16:36:22 +11:00
nrf shared/tinyusb: Allow ports to use 1200bps-touch without other CDC code. 2024-06-02 23:27:33 +10:00
pic16bit all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
powerpc py/mpconfig: Disable qstr hashing at minimum feature level. 2024-01-25 16:38:17 +11:00
qemu-arm qemu-arm: Clean up header file includes. 2024-06-11 21:43:45 +10:00
qemu-riscv qemu-riscv: Enable native code generation by default. 2024-06-21 15:07:03 +10:00
renesas-ra renesas-ra/mphalport: Refactor to use shared TinyUSB CDC functions. 2024-05-31 19:47:37 +10:00
rp2 rp2: Fix recursive atomic sections when core1 is active. 2024-06-25 11:01:25 +10:00
samd samd/mphalport: Refactor to use shared TinyUSB CDC functions. 2024-05-31 19:47:55 +10:00
stm32 esp32,mimxrt,stm32: Implement ipconfig() for more network interfaces. 2024-06-04 12:45:01 +10:00
unix unix/variants: Don't use native _Float16 type. 2024-03-20 14:13:49 +11:00
webassembly webassembly/api: Allow specifying the pystack size. 2024-06-20 00:26:08 +10:00
windows py/objdeque: Expand implementation to be doubly-ended and support iter. 2024-03-18 14:10:14 +11:00
zephyr zephyr: Link MicroPython with the Zephyr kernel library. 2024-06-18 16:19:07 +10:00