Hi Ashwin



*> NPA_POOL_ERR_INT_RANGE fires spuriously between pool creation >
(ptr_start/ptr_end default to 0/~0) and the actual range install > via
roc_npa_pool_op_range_set().  >>ERR_INT_RANGE is not supposed to fire
spuriously. Did you root cause why this is happening ?*

Yes — the root cause is NDC staleness. The AQ INIT writes pool context
(including ptr_start=0, ptr_end=~0) directly to RAM, bypassing NDC. When
the MMIO data path (aura_op_free) reads pool context, it goes through NDC
which can still have stale zeros from a previous init/teardown cycle —
including ptr_end=0. Against that stale range [0, 0], any buffer IOVA
triggers RANGE.

The NDC sync patch [
https://patches.dpdk.org/project/dpdk/patch/[email protected]/]
addresses this root cause by invalidating NDC after AQ INIT. This RANGE
patch adds defense-in-depth: mask RANGE during the init→range_set window
and re-enable only after the real range is installed.
I also acknowledge that this fix is no longer required if we force-sync the
NDC as in
https://patches.dpdk.org/project/dpdk/patch/[email protected]/.
We can drop this patch completely.



*> On CN10K this drains the pool > stack and makes the pool
unusable.>>Didn't quite understand this part. Could you please elaborate.*

Sorry for my poor wordings. on my part. The pool stack does not get drained
— it never gets populated.During cnxk_mempool_populate(), each
roc_npa_aura_op_free()
call silently drops the buffer (NPA sees stale context with ena=0 or
ptr_end=0 via NDC). After populate completes, the pool has 0 available
buffers despite no error being returned. Subsequent roc_npa_aura_op_alloc()
returns NULL, causing port start failures.

All this will be taken care of via NDC sync. So it's safe to drop this
patch.

I initially made this fix and later fixed the NDC sync issue, so somehow, I
forgot to  mark this patch as dropped.

Thanks
Amiya


On Tue, 15 Sept 2026 at 12:09, Ashwin Sekhar T K <[email protected]>
wrote:

> Hi Amiya,
>
> > NPA_POOL_ERR_INT_RANGE fires spuriously between pool creation
> > (ptr_start/ptr_end default to 0/~0) and the actual range install
> > via roc_npa_pool_op_range_set().
> ERR_INT_RANGE is not supposed to fire spuriously. Did you root cause why
> this is happening ?
>
>
> > On CN10K this drains the pool
> > stack and makes the pool unusable.
> Didn't quite understand this part. Could you please elaborate.
>
> Thanks
> Ashwin
>
>
>

Reply via email to