All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.