From 595ce48eb2be88a42ceb33865c337020a328a4dd Mon Sep 17 00:00:00 2001 From: Dion Dokter Date: Wed, 25 Dec 2024 22:54:48 +0100 Subject: [PATCH] Write the flag sooner with a known value --- embassy-stm32/src/lib.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs index 3c7f96bb1..857090303 100644 --- a/embassy-stm32/src/lib.rs +++ b/embassy-stm32/src/lib.rs @@ -350,6 +350,11 @@ mod dual_core { pub fn init_primary(config: Config, shared_data: &'static MaybeUninit) -> Peripherals { let shared_data = unsafe { shared_data.assume_init_ref() }; + // Write the flag as soon as possible. Reading this flag uninitialized in the `init_secondary` + // is maybe unsound? Unclear. If it is indeed unsound, writing it sooner doesn't fix it all, + // but improves the odds of it going right + shared_data.init_flag.store(0, Ordering::SeqCst); + rcc::set_freqs_ptr(shared_data.clocks.get()); let p = init_hw(config);