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 > > >

