Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ntb: point to right memory window index

second parameter of ntb_peer_mw_get_addr is pointing to wrong memory
window index by passing "peer gidx" instead of "local gidx".

For ex, "local gidx" value is '0' and "peer gidx" value is '1', then

on peer side ntb_mw_set_trans() api is used as below with gidx pointing to
local side gidx which is '0', so memroy window '0' is chosen and XLAT '0'
will be programmed by peer side.

ntb_mw_set_trans(perf->ntb, peer->pidx, peer->gidx, peer->inbuf_xlat,
peer->inbuf_size);

Now, on local side ntb_peer_mw_get_addr() is been used as below with gidx
pointing to "peer gidx" which is '1', so pointing to memory window '1'
instead of memory window '0'.

ntb_peer_mw_get_addr(perf->ntb, peer->gidx, &phys_addr,
&peer->outbuf_size);

So this patch pass "local gidx" as parameter to ntb_peer_mw_get_addr().

Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>

authored by

Sanjay R Mehta and committed by
Jon Mason
ae89339b 4d856f72

+1 -1
+1 -1
drivers/ntb/test/ntb_perf.c
··· 1378 1378 int ret; 1379 1379 1380 1380 /* Get outbound MW parameters and map it */ 1381 - ret = ntb_peer_mw_get_addr(perf->ntb, peer->gidx, &phys_addr, 1381 + ret = ntb_peer_mw_get_addr(perf->ntb, perf->gidx, &phys_addr, 1382 1382 &peer->outbuf_size); 1383 1383 if (ret) 1384 1384 return ret;