Commit f2e030dd authored by Almog Khaikin's avatar Almog Khaikin Committed by Jens Axboe

io_uring: replace smp_mb() with smp_mb__after_atomic() in io_sq_thread()

The IORING_SQ_NEED_WAKEUP flag is now set using atomic_or() which
implies a full barrier on some architectures but it is not required to
do so. Use the more appropriate smp_mb__after_atomic() which avoids the
extra barrier on those architectures.
Signed-off-by: default avatarAlmog Khaikin <almogkh@gmail.com>
Link: https://lore.kernel.org/r/20220426163403.112692-1-almogkh@gmail.com
Fixes: 8018823e6987 ("io_uring: serialize ctx->rings->sq_flags with atomic_or/and")
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ef060ea9
...@@ -8229,7 +8229,7 @@ static int io_sq_thread(void *data) ...@@ -8229,7 +8229,7 @@ static int io_sq_thread(void *data)
* Ensure the store of the wakeup flag is not * Ensure the store of the wakeup flag is not
* reordered with the load of the SQ tail * reordered with the load of the SQ tail
*/ */
smp_mb(); smp_mb__after_atomic();
if (io_sqring_entries(ctx)) { if (io_sqring_entries(ctx)) {
needs_sched = false; needs_sched = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment