git: 65ec52e6e09f - main - buf_ring: Remove unneeded memory barriers
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 09 Dec 2024 15:45:04 UTC
The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=65ec52e6e09f8b2a610a26638ff65a35ee5557b4 commit 65ec52e6e09f8b2a610a26638ff65a35ee5557b4 Author: Andrew Turner <andrew@FreeBSD.org> AuthorDate: 2024-12-09 15:04:37 +0000 Commit: Andrew Turner <andrew@FreeBSD.org> CommitDate: 2024-12-09 15:44:30 +0000 buf_ring: Remove unneeded memory barriers We no longer need a memory barrier on the compare and set operations. If these fail then there are appropriate barriers on the loads earlier in the loop, and if they succeed then no other threads can be accessing the br_ring entry so any store to it is safe. Reviewed by: alc Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D46381 --- sys/sys/buf_ring.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/sys/buf_ring.h b/sys/sys/buf_ring.h index 9a4bfa9fb549..ab7e683ed0e9 100644 --- a/sys/sys/buf_ring.h +++ b/sys/sys/buf_ring.h @@ -116,7 +116,7 @@ buf_ring_enqueue(struct buf_ring *br, void *buf) } continue; } - } while (!atomic_cmpset_acq_32(&br->br_prod_head, prod_head, prod_next)); + } while (!atomic_cmpset_32(&br->br_prod_head, prod_head, prod_next)); prod_idx = prod_head & mask; #ifdef DEBUG_BUFRING if (br->br_ring[prod_idx] != NULL) @@ -163,7 +163,7 @@ buf_ring_dequeue_mc(struct buf_ring *br) critical_exit(); return (NULL); } - } while (!atomic_cmpset_acq_32(&br->br_cons_head, cons_head, cons_next)); + } while (!atomic_cmpset_32(&br->br_cons_head, cons_head, cons_next)); cons_idx = cons_head & mask; buf = br->br_ring[cons_idx];