From 92734378be161fd384d0f5f01cbd1ff8ff34fe7b Mon Sep 17 00:00:00 2001 From: Ashwin Sekhar T K Date: Tue, 30 Nov 2021 11:37:02 +0530 Subject: [PATCH] common/cnxk: wait for XAQ pool to fill Wait for XAQ pool to get filled with the freed pointers before proceeding. Signed-off-by: Ashwin Sekhar T K Acked-by: Jerin Jacob --- drivers/common/cnxk/roc_sso.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/common/cnxk/roc_sso.c b/drivers/common/cnxk/roc_sso.c index 1b85f04970..f8a0a96533 100644 --- a/drivers/common/cnxk/roc_sso.c +++ b/drivers/common/cnxk/roc_sso.c @@ -453,6 +453,13 @@ sso_hwgrp_init_xaq_aura(struct dev *dev, struct roc_sso_xaq_data *xaq, } roc_npa_aura_op_range_set(xaq->aura_handle, (uint64_t)xaq->mem, iova); + if (roc_npa_aura_op_available_wait(xaq->aura_handle, xaq->nb_xaq, 0) != + xaq->nb_xaq) { + plt_err("Failed to free all pointers to the pool"); + rc = -ENOMEM; + goto npa_fill_fail; + } + /* When SW does addwork (enqueue) check if there is space in XAQ by * comparing fc_addr above against the xaq_lmt calculated below. * There should be a minimum headroom of 7 XAQs per HWGRP for SSO @@ -461,6 +468,8 @@ sso_hwgrp_init_xaq_aura(struct dev *dev, struct roc_sso_xaq_data *xaq, xaq->xaq_lmt = xaq->nb_xaq - (nb_hwgrp * SSO_XAQ_CACHE_CNT); return 0; +npa_fill_fail: + roc_npa_pool_destroy(xaq->aura_handle); npa_fail: plt_free(xaq->mem); free_fc: -- 2.39.5