DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
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.


  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