diff options
| author | Gary Guo <gary@garyguo.net> | 2026-09-01 21:59:33 +0100 |
|---|---|---|
| committer | Danilo Krummrich <dakr@kernel.org> | 2026-09-02 10:07:33 +0200 |
| commit | 6cb331644c441ff4101a4f8726283a6ed0d5947e (patch) | |
| tree | 05d60dcc257c31f74db1bf06467363c4d370bfa0 /scripts/Makefile.thinlto | |
| parent | 9e270c4fd863918883977615d7fc54c9b9d018c8 (diff) | |
| download | linux-next-6cb331644c441ff4101a4f8726283a6ed0d5947e.tar.gz linux-next-6cb331644c441ff4101a4f8726283a6ed0d5947e.zip | |
gpu: nova-core: fix barrier usage in GSP->CPU messaging path
In the GSP->CPU messaging path, the code reads the write pointer from GSP,
reads the response and advances the read pointer.
A LOAD->LOAD ordering is required after the write pointer read and the data
read. Add it as this is currently missing.
A LOAD->STORE ordering is required after the data read and the advance of
read pointer. Currently a Rust `SeqCst` barrier is used, which roughly maps
to `smp_mb(Full)`; this however does not order DMA operations (notably on
ARM, the generate barrier orders inner shareable and not outer shareable,
which is ordered by `dma_mb`). This ordering does not need to be in between
read pointer read and write, because it's for ordering between the ring
buffer data and the pointer; the RMW operation does not internally need a
barrier (nor it has to be atomic, as CPU pointers are updated by CPU only),
so move it to before the RMW sequence for clarity.
Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>
Link: https://patch.msgid.link/20260901-rust-barrier-v4-2-94427f445310@garyguo.net
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
