[PATCH 08/11] NTB: perf: Reject grouped memory windows
Koichiro Den <[email protected]> Tue, 4 Aug 2026 03:04:35 +0900
| Newsgroups | dev.linux.lists.ntb,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
NTB perf configures one MW per peer through the per-MW translation API. It cannot configure one member of a larger translation group. Reject such layouts at probe. Otherwise, link setup cannot complete and a performance test waits indefinitely. Signed-off-by: Koichiro Den <[email protected]> --- drivers/ntb/test/ntb_perf.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c index dfd175f79e8f..50bfbec1e251 100644 --- a/drivers/ntb/test/ntb_perf.c +++ b/drivers/ntb/test/ntb_perf.c @@ -1436,7 +1436,7 @@ static int perf_setup_peer_mw(struct perf_peer *peer) static int perf_init_peers(struct perf_ctx *perf) { struct perf_peer *peer; - int pidx, lport, ret; + int first, count, pidx, lport, ret; lport = ntb_port_number(perf->ntb); perf->gidx = -1; @@ -1469,7 +1469,19 @@ static int perf_init_peers(struct perf_ctx *perf) } for (pidx = 0; pidx < perf->pcnt; pidx++) { - ret = perf_setup_peer_mw(&perf->peers[pidx]); + peer = &perf->peers[pidx]; + ret = ntb_mw_get_trans_group(perf->ntb, peer->pidx, + peer->gidx, &first, &count); + if (ret) + return ret; + if (first != peer->gidx || count != 1) { + dev_err(&perf->ntb->dev, + "Peer %d MW %d is not a standalone window\n", + peer->pidx, peer->gidx); + return -EOPNOTSUPP; + } + + ret = perf_setup_peer_mw(peer); if (ret) return ret; } -- 2.51.0