svm: fix inadequate atomic load for chunk mgr
- Fixes intermittent LDP cut thru iperf3 test
failure on AARCH64
Type: fix
Change-Id: Id21a078d642e03d974bacacd1f4d0faa42fb6652
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
diff --git a/src/svm/fifo_segment.c b/src/svm/fifo_segment.c
index d8b3b25..cb1f08a 100644
--- a/src/svm/fifo_segment.c
+++ b/src/svm/fifo_segment.c
@@ -154,7 +154,7 @@
csp = fs_chunk_sptr (fsh, c);
ASSERT (csp <= FS_CL_HEAD_MASK);
- old_head = clib_atomic_load_relax_n (&fss->free_chunks[fl_index]);
+ old_head = clib_atomic_load_acq_n (&fss->free_chunks[fl_index]);
do
{
@@ -174,7 +174,7 @@
headsp = fs_chunk_sptr (fsh, head);
ASSERT (headsp <= FS_CL_HEAD_MASK);
- old_head = clib_atomic_load_relax_n (&fss->free_chunks[fl_index]);
+ old_head = clib_atomic_load_acq_n (&fss->free_chunks[fl_index]);
do
{
@@ -194,7 +194,7 @@
ASSERT (fss_chunk_fl_index_is_valid (fss, fl_index));
- old_head = clib_atomic_load_relax_n (&fss->free_chunks[fl_index]);
+ old_head = clib_atomic_load_acq_n (&fss->free_chunks[fl_index]);
/* Lock-free stacks are affected by ABA if a side allocates a chunk and
* shortly thereafter frees it. To circumvent that, reuse the upper bits
diff --git a/test/test_vcl.py b/test/test_vcl.py
index a574f7f..2688816 100755
--- a/test/test_vcl.py
+++ b/test/test_vcl.py
@@ -6,7 +6,7 @@
import subprocess
import signal
from framework import VppTestCase, VppTestRunner, running_extended_tests, \
- Worker, is_platform_aarch64
+ Worker
from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath, FibPathProto
iperf3 = '/usr/bin/iperf3'
@@ -291,8 +291,6 @@
"sock_test_client", self.client_echo_test_args)
@unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
- @unittest.skipIf(is_platform_aarch64,
- "intermittently fails on AARCH64 CI jobs")
def test_ldp_cut_thru_iperf3(self):
""" run LDP cut thru iperf3 test """