This expands the existing smp barriers to also mandatory barriers and DMA barriers.
The API looks like: `mb(Ordering)`/`smp_mb(Ordering)`/`dma_mb(Ordering)`, where `Ordering` is one of `Full`, `Read`, `Write`. I retain the use of generics to avoid duplicating `CONFIG_SMP` check (but also retaining the ability to easily add `Acquire` and `Release` ordering in the future). A user of these introduced API is included in patch 3, which is a concurrency bug that exists in Nova code today due to missing barriers. Signed-off-by: Gary Guo <[email protected]> --- Changes in v2: - Dropped `Acquire` and `Release` aliases of `Full` (Joel) - Use macros to implement most `MemoryBarrier` - Split Nova change to GSP->CPU commit and CPU->GSP commit (Joel) - Link to v1: https://patch.msgid.link/[email protected] To: Miguel Ojeda <[email protected]> To: Boqun Feng <[email protected]> To: Gary Guo <[email protected]> To: Björn Roy Baron <[email protected]> To: Benno Lossin <[email protected]> To: Andreas Hindborg <[email protected]> To: Alice Ryhl <[email protected]> To: Trevor Gross <[email protected]> To: Danilo Krummrich <[email protected]> To: Will Deacon <[email protected]> To: Peter Zijlstra <[email protected]> To: Mark Rutland <[email protected]> To: Alexandre Courbot <[email protected]> To: David Airlie <[email protected]> To: Simona Vetter <[email protected]> Cc: Alan Stern <[email protected]> Cc: Andrea Parri <[email protected]> Cc: Nicholas Piggin <[email protected]> Cc: David Howells <[email protected]> Cc: Jade Alglave <[email protected]> Cc: Luc Maranget <[email protected]> Cc: "Paul E. McKenney" <[email protected]> Cc: Akira Yokosawa <[email protected]> Cc: Daniel Lustig <[email protected]> Cc: Joel Fernandes <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] --- Gary Guo (4): rust: sync: add helpers for mb, dma_mb and friends rust: sync: generic memory barriers gpu: nova-core: fix barrier usage in CPU->GSP messaging path gpu: nova-core: fix barrier usage in GSP->CPU messaging path drivers/gpu/nova-core/gsp/cmdq.rs | 18 ++++++ drivers/gpu/nova-core/gsp/fw.rs | 12 ---- rust/helpers/barrier.c | 30 +++++++++ rust/kernel/sync/atomic/ordering.rs | 2 +- rust/kernel/sync/barrier.rs | 123 ++++++++++++++++++++++++++++-------- 5 files changed, 144 insertions(+), 41 deletions(-) --- base-commit: a87737435cfa134f9cdcc696ba3080759d04cf72 change-id: 20260609-rust-barrier-63078ea76216 Best regards, -- Gary Guo <[email protected]>
