Segfaults are reported with TVM/LLVM models as NULL value
is read by dequeue thread for the op handle. This is due
synchronization issue between enqueue and dequeue threads.

This fix ensures the op handle written to internal request
structure is committed before the dequeue threads read the
handle value.

Fixes: 88001b4d88de ("ml/cnxk: update fast path functions")

Signed-off-by: Srikanth Yalavarthi <syalavar...@marvell.com>
---
 drivers/ml/cnxk/cnxk_ml_ops.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/ml/cnxk/cnxk_ml_ops.c b/drivers/ml/cnxk/cnxk_ml_ops.c
index 81866ceaa6..971362b242 100644
--- a/drivers/ml/cnxk/cnxk_ml_ops.c
+++ b/drivers/ml/cnxk/cnxk_ml_ops.c
@@ -1596,6 +1596,7 @@ cnxk_ml_enqueue_burst(struct rte_ml_dev *dev, uint16_t 
qp_id, struct rte_ml_op *
 jcmdq_full:
        queue->head = head;
        qp->stats.enqueued_count += count;
+       rte_wmb();
 
        return count;
 }
-- 
2.42.0

Reply via email to