[1/9] common/cnxk: get mbox lock before NDC sync
Checks
Commit Message
Take mbox lock before NDC sync to be thread safe.
Also release the lock only after access to response
is complete.
Fixes: 7a978bc4be6b ("common/cnxk: support mailbox locking")
Cc: rkudurumalla@marvell.com
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
drivers/common/cnxk/roc_nix_tm.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
@@ -690,13 +690,16 @@ roc_nix_tm_sq_free_pending_sqe(struct nix *nix, int q)
mbox = dev->mbox;
/* Sync NDC-NIX-TX for LF */
- ndc_req = mbox_alloc_msg_ndc_sync_op(mbox);
- if (ndc_req == NULL)
+ ndc_req = mbox_alloc_msg_ndc_sync_op(mbox_get(mbox));
+ if (ndc_req == NULL) {
+ mbox_put(mbox);
return -EFAULT;
+ }
ndc_req->nix_lf_tx_sync = 1;
if (mbox_process(mbox))
rc |= NIX_ERR_NDC_SYNC;
+ mbox_put(mbox);
if (rc)
plt_err("NDC_SYNC failed rc %d", rc);
@@ -1480,8 +1483,9 @@ nix_tm_alloc_txschq(struct nix *nix, enum roc_nix_tm_tree tree)
mbox_put(mbox);
goto alloc_err;
}
- mbox_put(mbox);
+
nix_tm_copy_rsp_to_nix(nix, rsp);
+ mbox_put(mbox);
} while (pend);
nix->tm_link_cfg_lvl = rsp->link_cfg_lvl;