[PATCH v5 00/10] LKMM generic atomics in Rust
Boqun Feng <[email protected]>
| Newsgroups | dev.linux.lists.lkmm,org.kernel.vger.linux-arch,org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux |
|---|---|
| Message-ID | <[email protected]> |
Hi, v5 for LKMM atomics in Rust, you can find the previous versions: v4: https://lore.kernel.org/rust-for-linux/[email protected]/ v3: https://lore.kernel.org/rust-for-linux/[email protected]/ v2: https://lore.kernel.org/rust-for-linux/[email protected]/ v1: https://lore.kernel.org/rust-for-linux/[email protected]/ wip: https://lore.kernel.org/rust-for-linux/[email protected]/ The reason of providing our own LKMM atomics is because memory model wise Rust native memory model is not guaranteed to work with LKMM and having only one memory model throughout the kernel is always better for reasoning. Changes since v4: * Rename the ordering enum type and corresponding constant in trait All as per feedback from Benno. * Add more tests for Atomic<{i,u}size> and Atomic<*mut T>. * Rebase on v6.16-rc2 Still please advise how we want to route the patches and for future ones: * Option #1: via tip, I can send a pull request to Ingo at -rc4 or -rc5. * Option #2: via rust, I can send a pull request to Miguel at -rc4 or -rc5. * Option #3: via my own tree or atomic group in kernel.org, I can send a pull request to Linus at 6.17 merge window. My default option is #1, but feel free to make any suggestion. Regards, Boqun Boqun Feng (10): rust: Introduce atomic API helpers rust: sync: Add basic atomic operation mapping framework rust: sync: atomic: Add ordering annotation types rust: sync: atomic: Add generic atomics rust: sync: atomic: Add atomic {cmp,}xchg operations rust: sync: atomic: Add the framework of arithmetic operations rust: sync: atomic: Add Atomic<u{32,64}> rust: sync: atomic: Add Atomic<{usize,isize}> rust: sync: atomic: Add Atomic<*mut T> rust: sync: Add memory barriers MAINTAINERS | 4 +- rust/helpers/atomic.c | 1038 +++++++++++++++++++++ rust/helpers/barrier.c | 18 + rust/helpers/helpers.c | 2 + rust/kernel/sync.rs | 2 + rust/kernel/sync/atomic.rs | 233 +++++ rust/kernel/sync/atomic/generic.rs | 523 +++++++++++ rust/kernel/sync/atomic/ops.rs | 199 ++++ rust/kernel/sync/atomic/ordering.rs | 106 +++ rust/kernel/sync/barrier.rs | 67 ++ scripts/atomic/gen-atomics.sh | 1 + scripts/atomic/gen-rust-atomic-helpers.sh | 65 ++ 12 files changed, 2257 insertions(+), 1 deletion(-) create mode 100644 rust/helpers/atomic.c create mode 100644 rust/helpers/barrier.c create mode 100644 rust/kernel/sync/atomic.rs create mode 100644 rust/kernel/sync/atomic/generic.rs create mode 100644 rust/kernel/sync/atomic/ops.rs create mode 100644 rust/kernel/sync/atomic/ordering.rs create mode 100644 rust/kernel/sync/barrier.rs create mode 100755 scripts/atomic/gen-rust-atomic-helpers.sh -- 2.39.5 (Apple Git-154)