aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ntb/test
diff options
context:
space:
mode:
authorSanjay R Mehta <sanju.mehta@amd.com>2019-02-15 09:21:19 +0000
committerJon Mason <jdmason@kudzu.us>2019-06-13 08:58:05 -0400
commit12c023d7c32ae14254c8903f0466d37dea6d21ed (patch)
tree9a4ed77194627872b0a4e00797cde760755e1db2 /drivers/ntb/test
parentNTB: ntb_perf: Disable NTB link after clearing peer XLAT registers (diff)
downloadlinux-dev-12c023d7c32ae14254c8903f0466d37dea6d21ed.tar.xz
linux-dev-12c023d7c32ae14254c8903f0466d37dea6d21ed.zip
NTB: ntb_perf: Clear stale values in doorbell and command SPAD register
when ntb_perf is unloaded, the command scratchpad register still retains the last initialized value of PERF_CMD_INVAL. When ntb_perf is re-loaded and reads peer command scratchpad register and it mis interprets the peer state as initialized. To avoid this, clearing the local side command scratchpad register in perf_disable_service Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com> Acked-by: Allen Hubbe <allenbh@gmail.com> Acked-by: Logan Gunthorpe <logang@deltatee.com> Acked-by: Serge Semin <fancer.lancer@gmail.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
Diffstat (limited to 'drivers/ntb/test')
-rw-r--r--drivers/ntb/test/ntb_perf.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c
index 32a70b6491cd..d028331558ea 100644
--- a/drivers/ntb/test/ntb_perf.c
+++ b/drivers/ntb/test/ntb_perf.c
@@ -751,6 +751,14 @@ static void perf_disable_service(struct perf_ctx *perf)
for (pidx = 0; pidx < perf->pcnt; pidx++)
flush_work(&perf->peers[pidx].service);
+ for (pidx = 0; pidx < perf->pcnt; pidx++) {
+ struct perf_peer *peer = &perf->peers[pidx];
+
+ ntb_spad_write(perf->ntb, PERF_SPAD_CMD(peer->gidx), 0);
+ }
+
+ ntb_db_clear(perf->ntb, PERF_SPAD_NOTIFY(perf->gidx));
+
ntb_link_disable(perf->ntb);
}