mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Serge Semin <fancer.lancer@gmail.com>
To: jdmason@kudzu.us, dave.jiang@intel.com, Allen.Hubbe@emc.com,
	Shyam-sundar.S-k@amd.com, Xiangliang.Yu@amd.com,
	gary.hook@amd.com
Cc: Sergey.Semin@t-platforms.ru, linux-ntb@googlegroups.com,
	linux-kernel@vger.kernel.org,
	Serge Semin <fancer.lancer@gmail.com>
Subject: [PATCH v2 13/15] NTB: ntb_test: Update ntb_tool MW tests
Date: Sun,  3 Dec 2017 22:17:34 +0300	[thread overview]
Message-ID: <20171203191736.3399-14-fancer.lancer@gmail.com> (raw)
In-Reply-To: <20171203191736.3399-1-fancer.lancer@gmail.com>

There are devices (like IDT PCIe switches), which outbound MWs xlat address
is setup on peer side. In this case local side is supposed to allocate
a memory buffer and somehow deliver the xlat DMA address to peer so one
could set the outbound MW up. The MW test is altered so to support both
previous Intel/AMD and new IDT-like devices.

Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
 tools/testing/selftests/ntb/ntb_test.sh | 89 +++++++++++++++++++++++++--------
 1 file changed, 68 insertions(+), 21 deletions(-)

diff --git a/tools/testing/selftests/ntb/ntb_test.sh b/tools/testing/selftests/ntb/ntb_test.sh
index 36f6a444c0d9..88c8ceb20607 100755
--- a/tools/testing/selftests/ntb/ntb_test.sh
+++ b/tools/testing/selftests/ntb/ntb_test.sh
@@ -43,7 +43,9 @@ function show_help()
 	echo "  -h              show this help message"
 	echo "  -l              list available local and remote PCI ids"
 	echo "  -r REMOTE_HOST  specify the remote's hostname to connect"
-        echo "                  to for the test (using ssh)"
+	echo "                  to for the test (using ssh)"
+	echo "  -m MW_SIZE      memory window size for ntb_tool"
+	echo "                  (default: $MW_SIZE)"
 	echo "  -p NUM          ntb_perf run order (default: $PERF_RUN_ORDER)"
 	echo "  -w max_mw_size  maxmium memory window size"
 	echo
@@ -316,6 +318,32 @@ function message_test()
 	echo "  Passed"
 }
 
+function get_number()
+{
+	KEY=$1
+
+	sed -n "s/^\(${KEY}\)[ \t]*\(0x[0-9a-fA-F]*\)\(\[p\]\)\?$/\2/p"
+}
+
+function mw_alloc()
+{
+	IDX=$1
+	LOC=$2
+	REM=$3
+
+	write_file $MW_SIZE "$LOC/mw_trans$IDX"
+
+	INB_MW=$(read_file "$LOC/mw_trans$IDX")
+	MW_ALIGNED_SIZE=$(echo "$INB_MW" | get_number "Window Size")
+	MW_DMA_ADDR=$(echo "$INB_MW" | get_number "DMA Address")
+
+	write_file "$MW_DMA_ADDR:$(($MW_ALIGNED_SIZE))" "$REM/peer_mw_trans$IDX"
+
+	if [[ $MW_SIZE -ne $MW_ALIGNED_SIZE ]]; then
+		echo "MW $IDX size aligned to $MW_ALIGNED_SIZE"
+	fi
+}
+
 function write_mw()
 {
 	split_remote $2
@@ -328,17 +356,15 @@ function write_mw()
 	fi
 }
 
-function mw_test()
+function mw_check()
 {
 	IDX=$1
 	LOC=$2
 	REM=$3
 
-	echo "Running $IDX tests on: $(basename $LOC) / $(basename $REM)"
-
-	write_mw "$LOC/$IDX"
+	write_mw "$LOC/mw$IDX"
 
-	split_remote "$LOC/$IDX"
+	split_remote "$LOC/mw$IDX"
 	if [[ "$REMOTE" == "" ]]; then
 		A=$VPATH
 	else
@@ -346,7 +372,7 @@ function mw_test()
 		ssh "$REMOTE" cat "$VPATH" > "$A"
 	fi
 
-	split_remote "$REM/peer_$IDX"
+	split_remote "$REM/peer_mw$IDX"
 	if [[ "$REMOTE" == "" ]]; then
 		B=$VPATH
 	else
@@ -354,7 +380,7 @@ function mw_test()
 		ssh "$REMOTE" cat "$VPATH" > "$B"
 	fi
 
-	cmp -n $MW_SIZE "$A" "$B"
+	cmp -n $MW_ALIGNED_SIZE "$A" "$B"
 	if [[ $? != 0 ]]; then
 		echo "Memory window $MW did not match!" >&2
 	fi
@@ -366,8 +392,39 @@ function mw_test()
 	if [[ "$B" == "/tmp/*" ]]; then
 		rm "$B"
 	fi
+}
+
+function mw_free()
+{
+	IDX=$1
+	LOC=$2
+	REM=$3
+
+	write_file "$MW_DMA_ADDR:0" "$REM/peer_mw_trans$IDX"
+
+	write_file 0 "$LOC/mw_trans$IDX"
+}
+
+function mw_test()
+{
+	LOC=$1
+	REM=$2
+
+	CNT=$(get_files_count "mw_trans" "$LOC")
+
+	for ((i = 0; i < $CNT; i++)); do
+		echo "Running mw$i tests on: $(subdirname $LOC) / " \
+		     "$(subdirname $REM)"
+
+		mw_alloc $i $LOC $REM
+
+		mw_check $i $LOC $REM
+
+		mw_free $i $LOC  $REM
+
+		echo "  Passed"
+	done
 
-	echo "  Passed"
 }
 
 function pingpong_test()
@@ -451,18 +508,8 @@ function ntb_tool_tests()
 	message_test "$LOCAL_PEER_TOOL" "$REMOTE_PEER_TOOL"
 	message_test "$REMOTE_PEER_TOOL" "$LOCAL_PEER_TOOL"
 
-	for PEER_TRANS in $(ls "$LOCAL_TOOL"/peer_trans*); do
-		PT=$(basename $PEER_TRANS)
-		write_file $MW_SIZE "$LOCAL_TOOL/$PT"
-		write_file $MW_SIZE "$REMOTE_TOOL/$PT"
-	done
-
-	for MW in $(ls "$LOCAL_TOOL"/mw*); do
-		MW=$(basename $MW)
-
-		mw_test $MW "$LOCAL_TOOL" "$REMOTE_TOOL"
-		mw_test $MW "$REMOTE_TOOL" "$LOCAL_TOOL"
-	done
+	mw_test "$LOCAL_PEER_TOOL" "$REMOTE_PEER_TOOL"
+	mw_test "$REMOTE_PEER_TOOL" "$LOCAL_PEER_TOOL"
 
 	_modprobe -r ntb_tool
 }
-- 
2.12.0

  parent reply	other threads:[~2017-12-03 19:19 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-03 19:17 [PATCH v2 00/15] NTB: Add full multi-port API support to the test drivers Serge Semin
2017-12-03 19:17 ` [PATCH v2 01/15] NTB: Rename NTB messaging API methods Serge Semin
2017-12-05 16:49   ` Jon Mason
2017-12-05 17:31     ` Serge Semin
2017-12-05 18:07       ` Jon Mason
2017-12-05 20:54         ` Serge Semin
2017-12-05 21:48           ` Logan Gunthorpe
2017-12-05 19:11       ` Logan Gunthorpe
2017-12-03 19:17 ` [PATCH v2 02/15] NTB: Set dma mask and dma coherent mask to NTB devices Serge Semin
2017-12-05 16:51   ` Jon Mason
2017-12-05 17:21     ` Logan Gunthorpe
2017-12-05 17:48     ` Serge Semin
2017-12-03 19:17 ` [PATCH v2 03/15] NTB: Fix UB/bug in ntb_mw_get_align() Serge Semin
2017-12-05 16:52   ` Jon Mason
2017-12-05 17:01     ` Logan Gunthorpe
2017-12-05 17:08       ` Jon Mason
2017-12-05 17:56     ` Serge Semin
2017-12-05 18:08       ` Jon Mason
2017-12-05 20:57         ` Serge Semin
2017-12-03 19:17 ` [PATCH v2 04/15] NTB: ntb_pp: Add full multi-port NTB API support Serge Semin
2017-12-05 17:02   ` Jon Mason
2017-12-05 19:53     ` Serge Semin
2017-12-05 21:50       ` Logan Gunthorpe
2017-12-03 19:17 ` [PATCH v2 05/15] NTB: ntb_tool: " Serge Semin
2017-12-05 18:03   ` Jon Mason
2017-12-05 19:16     ` Logan Gunthorpe
2017-12-05 20:01     ` Serge Semin
2017-12-03 19:17 ` [PATCH v2 06/15] NTB: ntb_perf: " Serge Semin
2017-12-05 18:21   ` Jon Mason
2017-12-05 20:29     ` Serge Semin
2017-12-06  1:17   ` kbuild test robot
2017-12-03 19:17 ` [PATCH v2 07/15] NTB: ntb_test: Safely use paths with whitespace Serge Semin
2017-12-05 18:24   ` Jon Mason
2017-12-03 19:17 ` [PATCH v2 08/15] NTB: ntb_test: Add ntb_tool port tests Serge Semin
2017-12-03 19:17 ` [PATCH v2 09/15] NTB: ntb_test: Update ntb_tool link tests Serge Semin
2017-12-05 18:26   ` Jon Mason
2017-12-05 20:37     ` Serge Semin
2017-12-03 19:17 ` [PATCH v2 10/15] NTB: ntb_test: Update ntb_tool DB tests Serge Semin
2017-12-05 18:27   ` Jon Mason
2017-12-05 19:38     ` Logan Gunthorpe
2017-12-05 20:42     ` Serge Semin
2017-12-03 19:17 ` [PATCH v2 11/15] NTB: ntb_test: Update ntb_tool Scratchpad tests Serge Semin
2017-12-03 19:17 ` [PATCH v2 12/15] NTB: ntb_test: Add ntb_tool Message tests Serge Semin
2017-12-03 19:17 ` Serge Semin [this message]
2017-12-03 19:17 ` [PATCH v2 14/15] NTB: ntb_test: Update ntb_perf tests Serge Semin
2017-12-03 19:17 ` [PATCH v2 15/15] NTB: ntb_hw_idt: Set NTB_TOPO_SWITCH topology Serge Semin
2017-12-04  4:54 ` [PATCH v2 00/15] NTB: Add full multi-port API support to the test drivers Logan Gunthorpe
2017-12-04  6:12   ` Serge Semin
2017-12-04 20:10 ` Allen Hubbe
2017-12-05 15:54   ` Serge Semin
2017-12-05 16:57     ` Logan Gunthorpe
2017-12-05 22:39 ` [PATCH v3 " Serge Semin
2017-12-05 22:39   ` [PATCH v3 01/15] NTB: Rename NTB messaging API methods Serge Semin
2017-12-05 23:36     ` Logan Gunthorpe
2017-12-05 22:39   ` [PATCH v3 02/15] NTB: Set dma mask and dma coherent mask to NTB devices Serge Semin
2017-12-05 23:39     ` Logan Gunthorpe
2017-12-05 22:39   ` [PATCH v3 03/15] NTB: Fix UB/bug in ntb_mw_get_align() Serge Semin
2017-12-05 23:38     ` Logan Gunthorpe
2017-12-05 22:39   ` [PATCH v3 04/15] NTB: ntb_pp: Add full multi-port NTB API support Serge Semin
2017-12-05 22:39   ` [PATCH v3 05/15] NTB: ntb_tool: " Serge Semin
2017-12-05 22:39   ` [PATCH v3 06/15] NTB: ntb_perf: " Serge Semin
2017-12-05 22:39   ` [PATCH v3 07/15] NTB: ntb_test: Safely use paths with whitespace Serge Semin
2017-12-05 22:39   ` [PATCH v3 08/15] NTB: ntb_test: Add ntb_tool port tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 09/15] NTB: ntb_test: Update ntb_tool link tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 10/15] NTB: ntb_test: Update ntb_tool DB tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 11/15] NTB: ntb_test: Update ntb_tool Scratchpad tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 12/15] NTB: ntb_test: Add ntb_tool Message tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 13/15] NTB: ntb_test: Update ntb_tool MW tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 14/15] NTB: ntb_test: Update ntb_perf tests Serge Semin
2017-12-05 22:39   ` [PATCH v3 15/15] NTB: ntb_hw_idt: Set NTB_TOPO_SWITCH topology Serge Semin
2017-12-05 23:36   ` [PATCH v3 00/15] NTB: Add full multi-port API support to the test drivers Logan Gunthorpe
2017-12-06 14:31   ` [PATCH v4 " Serge Semin
2017-12-06 14:31     ` [PATCH v4 01/15] NTB: Rename NTB messaging API methods Serge Semin
2017-12-06 14:31     ` [PATCH v4 02/15] NTB: Set dma mask and dma coherent mask to NTB devices Serge Semin
2017-12-06 14:31     ` [PATCH v4 03/15] NTB: Fix UB/bug in ntb_mw_get_align() Serge Semin
2017-12-06 14:31     ` [PATCH v4 04/15] NTB: ntb_pp: Add full multi-port NTB API support Serge Semin
2017-12-06 14:31     ` [PATCH v4 05/15] NTB: ntb_tool: " Serge Semin
2017-12-06 14:31     ` [PATCH v4 06/15] NTB: ntb_perf: " Serge Semin
2017-12-06 14:31     ` [PATCH v4 07/15] NTB: ntb_test: Safely use paths with whitespace Serge Semin
2017-12-06 14:31     ` [PATCH v4 08/15] NTB: ntb_test: Add ntb_tool port tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 09/15] NTB: ntb_test: Update ntb_tool link tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 10/15] NTB: ntb_test: Update ntb_tool DB tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 11/15] NTB: ntb_test: Update ntb_tool Scratchpad tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 12/15] NTB: ntb_test: Add ntb_tool Message tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 13/15] NTB: ntb_test: Update ntb_tool MW tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 14/15] NTB: ntb_test: Update ntb_perf tests Serge Semin
2017-12-06 14:32     ` [PATCH v4 15/15] NTB: ntb_hw_idt: Set NTB_TOPO_SWITCH topology Serge Semin
2018-01-18 22:28     ` [PATCH v4 00/15] NTB: Add full multi-port API support to the test drivers Jon Mason

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=20171203191736.3399-14-fancer.lancer@gmail.com \
    --to=fancer.lancer@gmail.com \
    --cc=Allen.Hubbe@emc.com \
    --cc=Sergey.Semin@t-platforms.ru \
    --cc=Shyam-sundar.S-k@amd.com \
    --cc=Xiangliang.Yu@amd.com \
    --cc=dave.jiang@intel.com \
    --cc=gary.hook@amd.com \
    --cc=jdmason@kudzu.us \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-ntb@googlegroups.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

Powered by JetHome