On Tue, 22 Sep 2026 14:51:53 +0530
Prashant Gupta <[email protected]> wrote:

> This series is the first of four that upstream the missing NXP dpaa2
> driver changes. It collects the foundational bus/fslmc, dma/dpaa2 and
> mempool/dpaa2 fixes that the later series build on:
> 
> - defer fslmc bus initialization to probe and reduce probe-time logging
>   and MC traffic,
> - fix an array-bounds warning and validate IOVA in the dpaa2 QDMA
>   pre-populate helpers,
> - support fetching the mempool ops index from the primary process in a
>   secondary process.
> 
> Every commit builds cleanly (including the aarch64 DPAA cross build with
> -Werror) and the series is bisectable.
> 
> Gagandeep Singh (1):
>   dma/dpaa2: validate IOVA in pre-populate helpers
> 
> Hemant Agrawal (1):
>   bus/fslmc: reduce probe-time logging and MC traffic
> 
> Jun Yang (2):
>   dma/dpaa2: fix array-bounds warning in dequeue path
>   mempool/dpaa2: support ops index from primary in secondary
> 
> Prashant Gupta (1):
>   bus/fslmc: defer bus initialization to probe
> 
>  drivers/bus/fslmc/fslmc_bus.c            |  92 +++++++++++---------
>  drivers/bus/fslmc/fslmc_vfio.c           |   3 +-
>  drivers/bus/fslmc/portal/dpaa2_hw_dprc.c |   5 ++
>  drivers/dma/dpaa2/dpaa2_qdma.c           |  44 +++++++---
>  drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 103 ++++++++++++++++++++++-
>  5 files changed, 191 insertions(+), 56 deletions(-)
> 

Several issues reported by AI on this series:

[PATCH v4-S1 0/5] fslmc bus, dpaa2 dma and mempool fixes

Applied to main (6bbb7b3). Per-commit build with -Dwerror=true passes
for all 5 patches (x86, gcc 13, bus/fslmc, mempool/dpaa2, net/dpaa2,
dma/dpaa2, crypto/dpaa2_sec, event/dpaa2).

Series-level:
Three of five commit messages (2, 3, 4) do not describe the code in
the patch. They read as carried over from an earlier revision.
Rewrite them against the actual diffs.


Patch 2/5 bus/fslmc: reduce probe-time logging and MC traffic

Warning: the body only covers the NOTICE -> DEBUG change. The
dpaa2_hw_dprc.c hunk, which skips dprc_get_connection() for blocked
devices, is not mentioned. Split it into its own patch or describe it.

Warning: the skip tests only devargs->policy == RTE_DEV_BLOCKED. With
an allowlist (-a, or no_auto_probing), non-listed devices have no
devargs and are still queried over MC. Use
rte_bus_device_is_ignored(&rte_fslmc_bus, dev->device.name), as the
pci, cdx, auxiliary, platform and uacce buses do.


Patch 3/5 dma/dpaa2: fix array-bounds warning in dequeue path

Warning: the commit message describes a per-queue idxs[] scratch
buffer and merging the LONG and SG fle_sdd handling. Neither is in
the diff. The patch actually does two things. It rewrites
qdma_cntx_idx_ring_eq() as a two-part memcpy with wrap. It moves the
SG fle_elem append after the ring enqueue and returns fle_sdd to the
pool directly on -ENOSPC. Describe those changes. Also name the
compiler and version that emits the warning.


Patch 4/5 dma/dpaa2: validate IOVA in pre-populate helpers

Warning: subject and body describe changing fle_sdd_pre_populate()
and fle_sdd_sg_pre_populate() to use DPAA2_VADDR_TO_IOVA_AND_CHECK()
and return errors. Neither helper is touched. The diff adds a single
rte_mempool_mem_iter() check of the fle_pool at vchan setup. Fix the
subject and message.

Warning: the new error path returns -ENOMEM without freeing
vqs[vchan].fle_pool. A second vchan_setup on the same vchan then fails
in rte_mempool_create() with a name collision. Free the pool and
clear the pointer.


Patch 5/5 mempool/dpaa2: support ops index from primary in secondary

Error: rte_dpaa2_mpool_get_ops_idx() is called per op in the
dpaa2_sec enqueue fast path (dpaa2_sec_dpseci.c:1544, :1903). In a
secondary it now issues rte_mp_request_sync() with a 5 s timeout
whenever the cached value is still RTE_MEMPOOL_MAX_OPS_IDX. That is
the steady state when the primary has not created a dpaa2 pool,
because the reply is the sentinel and nothing is cached. The result
is a blocking IPC round trip per crypto op, from multiple lcores
concurrently, and a 5 s stall per op if the primary is gone.

The IPC is not needed. Mempool ops are registered by constructor in
the same order in every process, which the multi-process mempool
model already depends on, so the index is process-invariant. Resolve
it locally in the secondary by looking up the "dpaa2" name in
rte_mempool_ops_table once, and cache it. That removes the IPC
channel, the action registration and the atomic.

Warning: the reply handler path does not check
mp_reply.msgs->len_param before memcpy from msg_data.

Warning: on rte_mp_request_sync() failure the function returns -1,
not an errno.

Info: rte_mp_action_register() returns ENOTSUP for --in-memory and
--no-shconf. That is a runtime condition, not "no secondary process
support enabled at build time" as the message says.

Reply via email to