From b2101c9a5c3727ec24038ad8f3504d86119dc91b Mon Sep 17 00:00:00 2001 From: Richael Zhuang Date: Mon, 29 Jul 2019 13:44:04 +0800 Subject: [PATCH] bdev: replace spdk_mb with spdk_smp_mb For aarch64 spdk_mb is defined as "__asm volatile("dsb sy" ::: "memory")" and spdk_smp_mb is defined as "__asm volatile("dmb ish" ::: "memory")". "dsb sy" completes when all instructions before this instruction complete. And "dmb ish" only keeps the order of memory access instructions before and after it. It doesn't affect the ordering of any other instructions. Here I think "dmb ish" is enough. And replace spdk_mb with spdk_smp_mb here will not affect PPC64, X86_64 and i386. Signed-off-by: Richael Zhuang Change-Id: Idd65f74567c594e5a6514a4ab0665b8f3606c883 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463455 Reviewed-by: Darek Stojaczyk Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins --- lib/bdev/aio/bdev_aio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bdev/aio/bdev_aio.c b/lib/bdev/aio/bdev_aio.c index 2d4599f11..46c4e5041 100644 --- a/lib/bdev/aio/bdev_aio.c +++ b/lib/bdev/aio/bdev_aio.c @@ -304,7 +304,7 @@ bdev_user_io_getevents(io_context_t io_ctx, unsigned int max, struct io_event *u #if defined(__i386__) || defined(__x86_64__) spdk_compiler_barrier(); #else - spdk_mb(); + spdk_smp_mb(); #endif ring->head = (head + count) % ring->size;