[<prev] [next>] [day] [month] [year] [list]
Message-ID: <1550222458-29752-1-git-send-email-Sanju.Mehta@amd.com>
Date: Fri, 15 Feb 2019 09:21:19 +0000
From: "Mehta, Sanju" <Sanju.Mehta@....com>
To: "S-k, Shyam-sundar" <Shyam-sundar.S-k@....com>,
"jdmason@...zu.us" <jdmason@...zu.us>,
"dave.jiang@...el.com" <dave.jiang@...el.com>,
"allenbh@...il.com" <allenbh@...il.com>
CC: "linux-ntb@...glegroups.com" <linux-ntb@...glegroups.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"Mehta, Sanju" <Sanju.Mehta@....com>
Subject: [PATCH 3/4] NTB: ntb_perf: Clear stale values in doorbell and command
SPAD register
From: Sanjay R Mehta <sanju.mehta@....com>
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@....com>
---
drivers/ntb/test/ntb_perf.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c
index 4a3fba4..c7d1a48 100644
--- a/drivers/ntb/test/ntb_perf.c
+++ b/drivers/ntb/test/ntb_perf.c
@@ -754,6 +754,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);
}
--
2.7.4
Powered by blists - more mailing lists