diff options
author | Sanjay R Mehta <sanju.mehta@amd.com> | 2019-02-15 09:21:19 +0000 |
---|---|---|
committer | Jon Mason <jdmason@kudzu.us> | 2019-06-13 08:58:05 -0400 |
commit | 12c023d7c32ae14254c8903f0466d37dea6d21ed (patch) | |
tree | 9a4ed77194627872b0a4e00797cde760755e1db2 | |
parent | b1ee5998a5d2bb16fb2bb9a03a30a83a55012b92 (diff) | |
download | linux-12c023d7c32ae14254c8903f0466d37dea6d21ed.tar.gz linux-12c023d7c32ae14254c8903f0466d37dea6d21ed.tar.bz2 linux-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>
-rw-r--r-- | drivers/ntb/test/ntb_perf.c | 8 |
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); } |