183 lines
7.0 KiB
Diff
183 lines
7.0 KiB
Diff
From patchwork Mon Apr 9 15:45:52 2018
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
Subject: [v2,3/5] crypto: thunderx_zip: Prevent division by zero
|
|
From: Jan Glauber <jglauber@cavium.com>
|
|
X-Patchwork-Id: 10331709
|
|
Message-Id: <20180409154554.7578-4-jglauber@cavium.com>
|
|
To: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Cc: "David S . Miller" <davem@davemloft.net>,
|
|
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
|
|
Mahipal Challa <Mahipal.Challa@cavium.com>,
|
|
Robert Richter <rrichter@cavium.com>, Jan Glauber <jglauber@cavium.com>
|
|
Date: Mon, 9 Apr 2018 17:45:52 +0200
|
|
|
|
Avoid two potential divisions by zero when calculating average
|
|
values for the zip statistics.
|
|
|
|
Signed-off-by: Jan Glauber <jglauber@cavium.com>
|
|
Reviewed-by: Robert Richter <rrichter@cavium.com>
|
|
---
|
|
drivers/crypto/cavium/zip/zip_main.c | 9 +++++----
|
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/crypto/cavium/zip/zip_main.c b/drivers/crypto/cavium/zip/zip_main.c
|
|
index 1cd8aa488185..79b449e0f955 100644
|
|
--- a/drivers/crypto/cavium/zip/zip_main.c
|
|
+++ b/drivers/crypto/cavium/zip/zip_main.c
|
|
@@ -482,10 +482,11 @@ static int zip_show_stats(struct seq_file *s, void *unused)
|
|
atomic64_add(val, &st->pending_req);
|
|
}
|
|
|
|
- avg_chunk = (atomic64_read(&st->comp_in_bytes) /
|
|
- atomic64_read(&st->comp_req_complete));
|
|
- avg_cr = (atomic64_read(&st->comp_in_bytes) /
|
|
- atomic64_read(&st->comp_out_bytes));
|
|
+ val = atomic64_read(&st->comp_req_complete);
|
|
+ avg_chunk = (val) ? atomic64_read(&st->comp_in_bytes) / val : 0;
|
|
+
|
|
+ val = atomic64_read(&st->comp_out_bytes);
|
|
+ avg_cr = (val) ? atomic64_read(&st->comp_in_bytes) / val : 0;
|
|
seq_printf(s, " ZIP Device %d Stats\n"
|
|
"-----------------------------------\n"
|
|
"Comp Req Submitted : \t%lld\n"
|
|
From patchwork Mon Apr 9 15:45:53 2018
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
Subject: [v2,4/5] crypto: thunderx_zip: Fix statistics pending request value
|
|
From: Jan Glauber <jglauber@cavium.com>
|
|
X-Patchwork-Id: 10331711
|
|
Message-Id: <20180409154554.7578-5-jglauber@cavium.com>
|
|
To: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Cc: "David S . Miller" <davem@davemloft.net>,
|
|
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
|
|
Mahipal Challa <Mahipal.Challa@cavium.com>,
|
|
Robert Richter <rrichter@cavium.com>, Jan Glauber <jglauber@cavium.com>
|
|
Date: Mon, 9 Apr 2018 17:45:53 +0200
|
|
|
|
The pending request counter was read from the wrong register. While
|
|
at it, there is no need to use an atomic for it as it is only read
|
|
localy in a loop.
|
|
|
|
Signed-off-by: Jan Glauber <jglauber@cavium.com>
|
|
Reviewed-by: Robert Richter <rrichter@cavium.com>
|
|
---
|
|
drivers/crypto/cavium/zip/zip_main.c | 13 +++++--------
|
|
drivers/crypto/cavium/zip/zip_main.h | 1 -
|
|
2 files changed, 5 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/drivers/crypto/cavium/zip/zip_main.c b/drivers/crypto/cavium/zip/zip_main.c
|
|
index 79b449e0f955..ae5b20c695ca 100644
|
|
--- a/drivers/crypto/cavium/zip/zip_main.c
|
|
+++ b/drivers/crypto/cavium/zip/zip_main.c
|
|
@@ -469,6 +469,8 @@ static int zip_show_stats(struct seq_file *s, void *unused)
|
|
struct zip_stats *st;
|
|
|
|
for (index = 0; index < MAX_ZIP_DEVICES; index++) {
|
|
+ u64 pending = 0;
|
|
+
|
|
if (zip_dev[index]) {
|
|
zip = zip_dev[index];
|
|
st = &zip->stats;
|
|
@@ -476,10 +478,8 @@ static int zip_show_stats(struct seq_file *s, void *unused)
|
|
/* Get all the pending requests */
|
|
for (q = 0; q < ZIP_NUM_QUEUES; q++) {
|
|
val = zip_reg_read((zip->reg_base +
|
|
- ZIP_DBG_COREX_STA(q)));
|
|
- val = (val >> 32);
|
|
- val = val & 0xffffff;
|
|
- atomic64_add(val, &st->pending_req);
|
|
+ ZIP_DBG_QUEX_STA(q)));
|
|
+ pending += val >> 32 & 0xffffff;
|
|
}
|
|
|
|
val = atomic64_read(&st->comp_req_complete);
|
|
@@ -514,10 +514,7 @@ static int zip_show_stats(struct seq_file *s, void *unused)
|
|
(u64)atomic64_read(&st->decomp_in_bytes),
|
|
(u64)atomic64_read(&st->decomp_out_bytes),
|
|
(u64)atomic64_read(&st->decomp_bad_reqs),
|
|
- (u64)atomic64_read(&st->pending_req));
|
|
-
|
|
- /* Reset pending requests count */
|
|
- atomic64_set(&st->pending_req, 0);
|
|
+ pending);
|
|
}
|
|
}
|
|
return 0;
|
|
diff --git a/drivers/crypto/cavium/zip/zip_main.h b/drivers/crypto/cavium/zip/zip_main.h
|
|
index 64e051f60784..e1e4fa92ce80 100644
|
|
--- a/drivers/crypto/cavium/zip/zip_main.h
|
|
+++ b/drivers/crypto/cavium/zip/zip_main.h
|
|
@@ -74,7 +74,6 @@ struct zip_stats {
|
|
atomic64_t comp_req_complete;
|
|
atomic64_t decomp_req_submit;
|
|
atomic64_t decomp_req_complete;
|
|
- atomic64_t pending_req;
|
|
atomic64_t comp_in_bytes;
|
|
atomic64_t comp_out_bytes;
|
|
atomic64_t decomp_in_bytes;
|
|
From patchwork Mon Apr 9 15:45:54 2018
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
Subject: [v2,5/5] crypto: thunderx_zip: Fix smp_processor_id() warnings
|
|
From: Jan Glauber <jglauber@cavium.com>
|
|
X-Patchwork-Id: 10331715
|
|
Message-Id: <20180409154554.7578-6-jglauber@cavium.com>
|
|
To: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Cc: "David S . Miller" <davem@davemloft.net>,
|
|
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
|
|
Mahipal Challa <Mahipal.Challa@cavium.com>,
|
|
Robert Richter <rrichter@cavium.com>, Jan Glauber <jglauber@cavium.com>
|
|
Date: Mon, 9 Apr 2018 17:45:54 +0200
|
|
|
|
Switch to raw_smp_processor_id() to prevent a number of
|
|
warnings from kernel debugging. We do not care about
|
|
preemption here, as the CPU number is only used as a
|
|
poor mans load balancing or device selection. If preemption
|
|
happens during a compress/decompress operation a small performance
|
|
hit will occur but everything will continue to work, so just
|
|
ignore it.
|
|
|
|
Signed-off-by: Jan Glauber <jglauber@cavium.com>
|
|
Reviewed-by: Robert Richter <rrichter@cavium.com>
|
|
---
|
|
drivers/crypto/cavium/zip/zip_device.c | 4 ++--
|
|
drivers/crypto/cavium/zip/zip_main.c | 2 +-
|
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/crypto/cavium/zip/zip_device.c b/drivers/crypto/cavium/zip/zip_device.c
|
|
index ccf21fb91513..f174ec29ed69 100644
|
|
--- a/drivers/crypto/cavium/zip/zip_device.c
|
|
+++ b/drivers/crypto/cavium/zip/zip_device.c
|
|
@@ -87,12 +87,12 @@ u32 zip_load_instr(union zip_inst_s *instr,
|
|
* Distribute the instructions between the enabled queues based on
|
|
* the CPU id.
|
|
*/
|
|
- if (smp_processor_id() % 2 == 0)
|
|
+ if (raw_smp_processor_id() % 2 == 0)
|
|
queue = 0;
|
|
else
|
|
queue = 1;
|
|
|
|
- zip_dbg("CPU Core: %d Queue number:%d", smp_processor_id(), queue);
|
|
+ zip_dbg("CPU Core: %d Queue number:%d", raw_smp_processor_id(), queue);
|
|
|
|
/* Take cmd buffer lock */
|
|
spin_lock(&zip_dev->iq[queue].lock);
|
|
diff --git a/drivers/crypto/cavium/zip/zip_main.c b/drivers/crypto/cavium/zip/zip_main.c
|
|
index ae5b20c695ca..be055b9547f6 100644
|
|
--- a/drivers/crypto/cavium/zip/zip_main.c
|
|
+++ b/drivers/crypto/cavium/zip/zip_main.c
|
|
@@ -113,7 +113,7 @@ struct zip_device *zip_get_device(int node)
|
|
*/
|
|
int zip_get_node_id(void)
|
|
{
|
|
- return cpu_to_node(smp_processor_id());
|
|
+ return cpu_to_node(raw_smp_processor_id());
|
|
}
|
|
|
|
/* Initializes the ZIP h/w sub-system */
|