From: Stephen Hemminger <stephen@networkplumber.org>
To: Raghavendra Ningoji <raghavendra.ningoji@amd.com>
Cc: <dev@dpdk.org>, <david.marchand@redhat.com>,
<jingjing.wu@intel.com>, <bhagyada.modali@amd.com>,
<Selwin.Sebastian@amd.com>, <bruce.richardson@intel.com>
Subject: Re: [PATCH v2 00/15] raw/ntb: post-merge fixes
Date: Fri, 6 Nov 2026 13:50:50 +0100 [thread overview]
Message-ID: <20261106135050.650879bf@stephen-xps.local> (raw)
In-Reply-To: <20261106055045.720805-1-raghavendra.ningoji@amd.com>
On Fri, 6 Nov 2026 11:20:30 +0530
Raghavendra Ningoji <raghavendra.ningoji@amd.com> wrote:
> This series addresses the post-merge review of the AMD NTB support
> by Stephen. Some of the issues also exist in the Intel code and in
> released versions; those patches are tagged for stable.
>
> - Patches 1-4 fix the type confusion in rte_pmd_ntb_get_mem_align(),
> the unbounded peer memory window count, the off-by-one in the
> address remapping and the memory window leaks.
>
> - Patch 5 fixes the doorbell interrupts with vfio-pci: only MSI-X
> vector 0 (DB0) was serviced, so the DB1/DB2 exchange of dev_stop
> never completed and the stop waited for its 1s timeout.
>
> - Patch 7 removes the AMD hardware event handling, which could not run
> as wired, and documents that hardware events are not handled.
>
> - Patches 8-9 fix the Rx path: a partially consumed packet was leaked
> and desynchronized the ring, and an mbuf owned by the application
> could be freed again on device stop.
>
> - Patches 14-15 fix the peer device status accesses between the
> interrupt thread and the stop/data paths, and the missing checks at
> queue setup.
>
> - The other patches are documentation and cleanup.
>
> The peer memory window size check suggested for the AMD handshake is
> not added: all the AMD scratchpads are in use, and the window limit
> register programmed with the local memzone length already bounds what
> the peer can reach.
>
> Tested with vfio-pci on two AMD EPYC Embedded hosts: handshake,
> file transfer, and stop/quit with DB1/DB2 exchange.
>
> ---
> Changes since v1:
> - Patch 4: embed the memory window size array in struct ntb_hw instead
> of freeing it on close, as the device stays attached after close and
> mw_size could then be dereferenced as NULL.
> - Patch 5: allocate the doorbell interrupt handle array with calloc(),
> as it only holds process-private pointers.
> - Added patch 14 for the peer device status atomic accesses.
> - Added patch 15 for the queue setup checks, also covering the Tx side
> (unchecked nb_desc, and queue leak on invalid tx_free_thresh).
>
> Raghavendra Ningoji (15):
> raw/ntb: fix device check in memory alignment query
> raw/ntb: fix peer memory window count check
> raw/ntb: fix memory window bound in address remapping
> raw/ntb: fix memory leaks
> raw/ntb: fix doorbell interrupts with VFIO MSI-X
> raw/ntb: fix AMD processor names
> raw/ntb: remove AMD hardware event handling
> raw/ntb: fix Rx of incomplete packets
> raw/ntb: fix double free of Rx mbufs on stop
> examples/ntb: fix raw/ntb library linking
> doc: add NTB device info change to ABI section
> doc: add IOVA requirement for NTB
> raw/ntb: remove unused AMD register definitions
> raw/ntb: fix peer device status access
> raw/ntb: fix queue setup checks
>
> doc/guides/rawdevs/ntb.rst | 12 +-
> doc/guides/rel_notes/release_26_11.rst | 6 +-
> drivers/raw/ntb/ntb.c | 212 +++++++++++++++++++------
> drivers/raw/ntb/ntb.h | 17 +-
> drivers/raw/ntb/ntb_hw_amd.c | 60 ++-----
> drivers/raw/ntb/ntb_hw_amd.h | 25 +--
> drivers/raw/ntb/ntb_hw_intel.c | 17 +-
> examples/ntb/Makefile | 3 +-
> 8 files changed, 210 insertions(+), 142 deletions(-)
>
This version gets clean review from manual AI run.
It did see one pre-existing bug though.
Subject: Re: [PATCH v2 00/15] raw/ntb: post-merge fixes
v2 applies to main (26.11-rc2) and builds at every commit with
-Dwerror=true, and with -Denable_stdatomic=true at the tip.
The v1 comments on 04/15 and 05/15 are addressed; 14/15 and 15/15
cover the pre-existing items.
Patch 15/15 raw/ntb: fix queue setup checks
Info (pre-existing, not introduced by this patch): ntb_queue_setup()
still leaks on two paths the commit message does not cover.
ntb_txq_setup() runs first and installs the queue:
hw->tx_queues[qp_id] = txq;
so when ntb_rxq_setup() then fails (rx_mp NULL, or allocation
failure), the Tx queue is left installed. Any second setup of the
same queue id (retry after that failure, or reconfiguration)
overwrites hw->tx_queues[qp_id] and hw->rx_queues[qp_id] without
freeing the previous queues.
Validate the shared conf before touching either queue, and release
what is already there:
if (queue_id >= hw->queue_pairs)
return -EINVAL;
if (conf->rx_mp == NULL)
return -EINVAL;
if (hw->tx_queues[queue_id] != NULL ||
hw->rx_queues[queue_id] != NULL)
ntb_queue_release(dev, queue_id);
ret = ntb_txq_setup(dev, queue_id, queue_conf, conf_size);
if (ret < 0)
return ret;
ret = ntb_rxq_setup(dev, queue_id, queue_conf, conf_size);
if (ret < 0)
ntb_queue_release(dev, queue_id);
return ret;
(ntb_txq_release()/ntb_rxq_release() log an error on NULL, so a
NULL check on each would be needed for the last release.) Fine as a
follow-up.
next prev parent reply other threads:[~2026-11-06 12:50 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-04 11:19 [PATCH 00/13] raw/ntb: post-merge fixes Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 01/13] raw/ntb: fix device check in memory alignment query Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 02/13] raw/ntb: fix peer memory window count check Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 03/13] raw/ntb: fix memory window bound in address remapping Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 04/13] raw/ntb: fix memory leaks Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 05/13] raw/ntb: fix doorbell interrupts with VFIO MSI-X Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 06/13] raw/ntb: fix AMD processor names Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 07/13] raw/ntb: remove AMD hardware event handling Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 08/13] raw/ntb: fix Rx of incomplete packets Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 09/13] raw/ntb: fix double free of Rx mbufs on stop Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 10/13] examples/ntb: fix raw/ntb library linking Raghavendra Ningoji
2026-11-04 11:19 ` [PATCH 11/13] doc: add NTB device info change to ABI section Raghavendra Ningoji
2026-11-04 11:20 ` [PATCH 12/13] doc: add IOVA requirement for NTB Raghavendra Ningoji
2026-11-04 11:20 ` [PATCH 13/13] raw/ntb: remove unused AMD register definitions Raghavendra Ningoji
2026-11-04 12:24 ` [PATCH 00/13] raw/ntb: post-merge fixes Stephen Hemminger
2026-11-06 5:54 ` Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 00/15] " Raghavendra Ningoji
2026-11-06 12:50 ` Stephen Hemminger [this message]
2026-11-11 7:09 ` Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 00/16] " Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 01/16] raw/ntb: fix device check in memory alignment query Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 02/16] raw/ntb: fix peer memory window count check Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 03/16] raw/ntb: fix memory window bound in address remapping Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 04/16] raw/ntb: fix memory leaks Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 05/16] raw/ntb: fix doorbell interrupts with VFIO MSI-X Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 06/16] raw/ntb: fix AMD processor names Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 07/16] raw/ntb: remove AMD hardware event handling Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 08/16] raw/ntb: fix Rx of incomplete packets Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 09/16] raw/ntb: fix double free of Rx mbufs on stop Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 10/16] examples/ntb: fix raw/ntb library linking Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 11/16] doc: add NTB device info change to ABI section Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 12/16] doc: add IOVA requirement for NTB Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 13/16] raw/ntb: remove unused AMD register definitions Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 14/16] raw/ntb: fix peer device status access Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 15/16] raw/ntb: fix queue setup checks Raghavendra Ningoji
2026-11-11 7:06 ` [PATCH v3 16/16] raw/ntb: fix queue leaks on setup Raghavendra Ningoji
2026-11-12 14:56 ` [PATCH v3 00/16] raw/ntb: post-merge fixes David Marchand
2026-11-06 5:50 ` [PATCH v2 01/15] raw/ntb: fix device check in memory alignment query Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 02/15] raw/ntb: fix peer memory window count check Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 03/15] raw/ntb: fix memory window bound in address remapping Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 04/15] raw/ntb: fix memory leaks Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 05/15] raw/ntb: fix doorbell interrupts with VFIO MSI-X Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 06/15] raw/ntb: fix AMD processor names Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 07/15] raw/ntb: remove AMD hardware event handling Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 08/15] raw/ntb: fix Rx of incomplete packets Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 09/15] raw/ntb: fix double free of Rx mbufs on stop Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 10/15] examples/ntb: fix raw/ntb library linking Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 11/15] doc: add NTB device info change to ABI section Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 12/15] doc: add IOVA requirement for NTB Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 13/15] raw/ntb: remove unused AMD register definitions Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 14/15] raw/ntb: fix peer device status access Raghavendra Ningoji
2026-11-06 5:50 ` [PATCH v2 15/15] raw/ntb: fix queue setup checks Raghavendra Ningoji
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261106135050.650879bf@stephen-xps.local \
--to=stephen@networkplumber.org \
--cc=Selwin.Sebastian@amd.com \
--cc=bhagyada.modali@amd.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=jingjing.wu@intel.com \
--cc=raghavendra.ningoji@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox