"Maybe James (or mabez for xtensa..." <- I can comment a bit on the Xtensa side, or at least Espressif's implementation of PSRAM for Xtensa. It's basically implemented like flash is for performance reasons, but because it's implemented like that there are no memory locking flags on the interface (flash isn't expected to change) atomics don't work in this external memory. Fortunately the new RISCV chips with PSRAM atomics work correctly. but yes, Ivan you are correct the only way to "solve" this for these xtensa chips and I guess the rp23 as well, is to a) not place atomics there in the first place (actually very hard to enforce) b) work around it with a custom atomic libcall, which isn't really viable on no_std, and we can't upstream that fix to the std port as it changes the semantics of atomics and upstream won't be happy with that. Imo that latter point could and should be argued a bit more with upstream