Also, make sure to start the actual text at the margin.
=========================================================
+* **rte_*mb APIs are updated to use DMB instruction for ARMv8.**
+
+ ARMv8 memory model has been strengthened to require other-multi-copy
+ atomicity. This allows for using DMB instruction instead of DSB for IO
+ barriers. rte_*mb APIs, for ARMv8 platforms, are changed to use DMB
+ instruction to reflect this.
+
* **Added the support for vfio-pci new VF token interface.**
From Linux 5.7, vfio-pci supports to bind both SR-IOV PF and the created VFs,
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2015 Cavium, Inc
- * Copyright(c) 2019 Arm Limited
+ * Copyright(c) 2020 Arm Limited
*/
#ifndef _RTE_ATOMIC_ARM64_H_
#include <rte_compat.h>
#include <rte_debug.h>
-#define rte_mb() asm volatile("dsb sy" : : : "memory")
+#define rte_mb() asm volatile("dmb osh" : : : "memory")
-#define rte_wmb() asm volatile("dsb st" : : : "memory")
+#define rte_wmb() asm volatile("dmb oshst" : : : "memory")
-#define rte_rmb() asm volatile("dsb ld" : : : "memory")
+#define rte_rmb() asm volatile("dmb oshld" : : : "memory")
#define rte_smp_mb() asm volatile("dmb ish" : : : "memory")
#define rte_io_rmb() rte_rmb()
-#define rte_cio_wmb() asm volatile("dmb oshst" : : : "memory")
+#define rte_cio_wmb() rte_wmb()
-#define rte_cio_rmb() asm volatile("dmb oshld" : : : "memory")
+#define rte_cio_rmb() rte_rmb()
/*------------------------ 128 bit atomic operations -------------------------*/