On Sat, Nov 7, 2026 at 10:48 AM <[email protected]> wrote:
>
> From: Pavan Nikhilesh <[email protected]>
>
> Add an I/O write barrier after LMTST submissions in the new-event
> helper so the stores are ordered before the next iteration.
>
> Enqueue small bursts, below one LMT line of entries, event by event
> instead of using the LMTST path.
>
> Fixes: c3320d21b475 ("event/cnxk: use LMTST for enqueue new burst")
> Fixes: b08b193bceab ("event/cnxk: add CN20K SSO enqueue fast path")
>
> Signed-off-by: Pavan Nikhilesh <[email protected]>
Applied to dpdk-next-eventdev/for-main. Thanks
> ---
> drivers/event/cnxk/cn10k_worker.c | 9 +++++++++
> drivers/event/cnxk/cn20k_worker.c | 9 +++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/drivers/event/cnxk/cn10k_worker.c
> b/drivers/event/cnxk/cn10k_worker.c
> index f33c3a561a88..a8ddbc5d8bfb 100644
> --- a/drivers/event/cnxk/cn10k_worker.c
> +++ b/drivers/event/cnxk/cn10k_worker.c
> @@ -350,6 +350,8 @@ cn10k_sso_hws_new_event_lmtst(struct cn10k_sso_hws *ws,
> uint8_t queue_id,
> roc_lmt_submit_steorl(wdata[1], pa[1]);
> }
>
> + rte_io_wmb();
> +
> left -= (sz0 + sz1);
> if (left)
> goto again;
> @@ -395,6 +397,13 @@ cn10k_sso_hws_enq_new_burst(void *port, const struct
> rte_event ev[],
> uint8_t queue_id;
> int32_t space;
>
> + if (nb_events < BIT(ROC_SSO_AW_PER_LMT_LINE_LOG2)) {
> + for (idx = 0; idx < nb_events; idx++)
> + if (!cn10k_sso_hws_new_event(ws, &ev[idx]))
> + break;
> + return idx;
> + }
> +
> /* Do a common back-pressure check and return */
> space = sso_read_xaq_space(ws) - ws->xae_waes;
> if (space <= 0)
> diff --git a/drivers/event/cnxk/cn20k_worker.c
> b/drivers/event/cnxk/cn20k_worker.c
> index 8c1df3dbafc1..c15e3cd46ae7 100644
> --- a/drivers/event/cnxk/cn20k_worker.c
> +++ b/drivers/event/cnxk/cn20k_worker.c
> @@ -308,6 +308,8 @@ cn20k_sso_hws_new_event_lmtst(struct cn20k_sso_hws *ws,
> uint8_t queue_id,
> roc_lmt_submit_steorl(wdata[1], pa[1]);
> }
>
> + rte_io_wmb();
> +
> left -= (sz0 + sz1);
> if (left)
> goto again;
> @@ -350,6 +352,13 @@ cn20k_sso_hws_enq_new_burst(void *port, const struct
> rte_event ev[], uint16_t nb
> uint8_t queue_id;
> int32_t space;
>
> + if (nb_events < BIT(ROC_SSO_AW_PER_LMT_LINE_LOG2)) {
> + for (idx = 0; idx < nb_events; idx++)
> + if (!cn20k_sso_hws_new_event(ws, &ev[idx]))
> + break;
> + return idx;
> + }
> +
> /* Do a common back-pressure check and return */
> space = sso_read_xaq_space(ws) - ws->xae_waes;
> if (space <= 0)
> --
> 2.50.1 (Apple Git-155)
>