Skip to contentSkip to conversation

cn10k: NPA_POOL_ERR_INT_RANGE on Pool 1 during mbuf pool creation in testpmd

DPDK/ethdev Bug 2031 [email protected] 1 participant 2 messages Sep 4 – Sep 16

lore
Share & tools
lore
#0 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=2031

Bug ID: 2031
Summary: cn10k: NPA_POOL_ERR_INT_RANGE on Pool 1 during mbuf
pool creation in testpmd
Product: DPDK
Version: 24.11
Hardware: ARM
OS: Linux
Status: UNCONFIRMED
Severity: critical
Priority: Normal
Component: ethdev
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---

Created attachment 390
--> https://bugs.dpdk.org/attachment.cgi?id=390&action=edit
testpmd-cn10k-mempool-issue.txt

Environment:
------------

- SoC: Marvell Octeon CN10K (cn10kb_a0)
- Kernel: 6.12.68
- DPDK: 24.11.2
- IOVA mode: PA
- VFIO: no-iommu mode
- Hugepages: 1024 x 2MB (2048 MB total)
- Mempool ops: cn10k_mempool_ops

Description:
--------------
testpmd creates mbuf pool mb_pool_0 (n=203456, size=2304) using cn10k_mempool_ops. During pool populate, Pool 1 triggers NPA_POOL_ERR_INT_RANGE repeatedly, followed by Err_intr=0x1000:

testpmd: create a new mbuf pool <mb_pool_0>: n=203456, size=2304, socket=0
testpmd: preferred mempool ops selected: cn10k_mempool_ops

CNXK: npa_q_irq():150 queue_intr=0x1 qintx=1
CNXK: npa_q_irq():165 Pool=1 NPA_POOL_ERR_INT_RANGE
(repeats 4 times during mbuf pool populate)

Configuring Port 0 (socket 0)
CNXK: npa_err_irq():18 Err_intr=0x1000
CNXK: npa_err_irq():18 Err_intr=0x1000

Pool 1 context at time of error:

  ptr_start:    0x24808d200
  ptr_end:      0x267200000
  buf_size:     20 (units of 128 bytes = 2560 bytes)
  buf_offset:   1
  count:        decreasing across dumps (0x31aa6 → 0x31a91 → 0x31a79 → 0)
  op_pc:        increasing (0x1a → 0x2f → 0x47 → 0x31ac0)
  stack_pages:  0 (remains zero across all dumps)

Notable observations:
----------------------
- stack_pages remains 0 throughout, even as op_pc increases — suggesting
buffers are being freed but the stack is not being updated
- count decreases to 0 by the final dump, indicating the pool is fully
drained
- The address range [0x24808d200, 0x267200000) spans ~512 MB, but the mempool
requests ~203K buffers of 2304 bytes (~447 MB)

Expected Result
-------------------
No NPA pool range errors. Pool 1 should initialize and populate without triggering NPA_POOL_ERR_INT_RANGE or npa_err_irq interrupts.

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.
#1 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=2031

Ashwin Sekhar T K ([email protected]) changed:

What |Removed |Added
----------------------------------------------------------------------------

                 CC|                            |[email protected]
             Status|CONFIRMED                   |RESOLVED
         Resolution|---                         |INVALID

--- Comment #5 from Ashwin Sekhar T K ([email protected]) ---

PCI_BUS:   Expecting 'VA' IOVA mode but current mode is 'PA', not initializing
EAL: Failed to probe device 0002:01:01.7
PCI_BUS:   Expecting 'VA' IOVA mode but current mode is 'PA', not initializing
EAL: Failed to probe device 0002:01:02.0
PCI_BUS:   Expecting 'VA' IOVA mode but current mode is 'PA', not initializing
EAL: Failed to probe device 0002:02:00.0
PCI_BUS:   Expecting 'VA' IOVA mode but current mode is 'PA', not initializing
EAL: Failed to probe device 0002:03:00.0
PCI_BUS:   Expecting 'VA' IOVA mode but current mode is 'PA', not initializing

These prints should be already coming. No further checks are required.

@Amiya,
It is not a supported mode. This means any address that you are configuring (whether it be contexts or stacks or pointers) will run into all sorts of issues.

You may print the pointers that you are trying to free to understand why the Range error happened. Mostly probably there is a difference in the range configured and the pointers being freed.

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.