* [PATCH v3 0/5] bug fix and clear coding style
@ 2021-04-09 9:03 Kai Ye
2021-04-09 9:04 ` [PATCH v3 1/5] crypto: hisilicon/sgl - add a comment for block size initialization Kai Ye
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:03 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
Fixup coding style such as delete unneeded variable
initialization. Add a comment for block size initialization.
Add a data cleared operation in sg buf unmap, and other misc fix.
v1 -> v2:
1. fix [PATCH v2] error in v1.
2. v1 use a macro replace of magic number, v2 use a comment
for block size initialization.
v2 -> v3:
fix a sparse warning
Kai Ye (5):
crypto: hisilicon/sgl - add a comment for block size initialization
crypto: hisilicon/sgl - delete unneeded variable initialization
crypto: hisilicon/sgl - add some dfx logs
crypto: hisilicon/sgl - fix the soft sg map to hardware sg
crypto: hisilicon/sgl - fix the sg buf unmap
drivers/crypto/hisilicon/sgl.c | 37 +++++++++++++++++++++++++++++++------
1 file changed, 31 insertions(+), 6 deletions(-)
--
2.8.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 1/5] crypto: hisilicon/sgl - add a comment for block size initialization
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
@ 2021-04-09 9:04 ` Kai Ye
2021-04-09 9:04 ` [PATCH v3 2/5] crypto: hisilicon/sgl - delete unneeded variable initialization Kai Ye
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:04 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
This seems "32" and "31" is obfuscating, It might be better to add a comment,
which explain it.
Signed-off-by: Kai Ye <yekai13@huawei.com>
---
drivers/crypto/hisilicon/sgl.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/crypto/hisilicon/sgl.c b/drivers/crypto/hisilicon/sgl.c
index 3bff639..cf1629c 100644
--- a/drivers/crypto/hisilicon/sgl.c
+++ b/drivers/crypto/hisilicon/sgl.c
@@ -66,6 +66,11 @@ struct hisi_acc_sgl_pool *hisi_acc_create_sgl_pool(struct device *dev,
sgl_size = sizeof(struct acc_hw_sge) * sge_nr +
sizeof(struct hisi_acc_hw_sgl);
+
+ /*
+ * the pool may allocate a block of memory of size PAGE_SIZE * 2^(MAX_ORDER - 1),
+ * block size may exceed 2^31 on ia64, so the max of block size is 2^31
+ */
block_size = 1 << (PAGE_SHIFT + MAX_ORDER <= 32 ?
PAGE_SHIFT + MAX_ORDER - 1 : 31);
sgl_num_per_block = block_size / sgl_size;
--
2.8.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/5] crypto: hisilicon/sgl - delete unneeded variable initialization
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
2021-04-09 9:04 ` [PATCH v3 1/5] crypto: hisilicon/sgl - add a comment for block size initialization Kai Ye
@ 2021-04-09 9:04 ` Kai Ye
2021-04-09 9:04 ` [PATCH v3 3/5] crypto: hisilicon/sgl - add some dfx logs Kai Ye
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:04 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
Delete unneeded variable initialization
Signed-off-by: Kai Ye <yekai13@huawei.com>
---
drivers/crypto/hisilicon/sgl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/crypto/hisilicon/sgl.c b/drivers/crypto/hisilicon/sgl.c
index cf1629c..b8a811f 100644
--- a/drivers/crypto/hisilicon/sgl.c
+++ b/drivers/crypto/hisilicon/sgl.c
@@ -56,7 +56,7 @@ struct hisi_acc_sgl_pool {
struct hisi_acc_sgl_pool *hisi_acc_create_sgl_pool(struct device *dev,
u32 count, u32 sge_nr)
{
- u32 sgl_size, block_size, sgl_num_per_block, block_num, remain_sgl = 0;
+ u32 sgl_size, block_size, sgl_num_per_block, block_num, remain_sgl;
struct hisi_acc_sgl_pool *pool;
struct mem_block *block;
u32 i, j;
--
2.8.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/5] crypto: hisilicon/sgl - add some dfx logs
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
2021-04-09 9:04 ` [PATCH v3 1/5] crypto: hisilicon/sgl - add a comment for block size initialization Kai Ye
2021-04-09 9:04 ` [PATCH v3 2/5] crypto: hisilicon/sgl - delete unneeded variable initialization Kai Ye
@ 2021-04-09 9:04 ` Kai Ye
2021-04-09 9:04 ` [PATCH v3 4/5] crypto: hisilicon/sgl - fix the soft sg map to hardware sg Kai Ye
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:04 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
Add some dfx logs in some abnormal exit situations.
Signed-off-by: Kai Ye <yekai13@huawei.com>
---
drivers/crypto/hisilicon/sgl.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/hisilicon/sgl.c b/drivers/crypto/hisilicon/sgl.c
index b8a811f..d04e551 100644
--- a/drivers/crypto/hisilicon/sgl.c
+++ b/drivers/crypto/hisilicon/sgl.c
@@ -90,8 +90,10 @@ struct hisi_acc_sgl_pool *hisi_acc_create_sgl_pool(struct device *dev,
block[i].sgl = dma_alloc_coherent(dev, block_size,
&block[i].sgl_dma,
GFP_KERNEL);
- if (!block[i].sgl)
+ if (!block[i].sgl) {
+ dev_err(dev, "Fail to allocate hw SG buffer!\n");
goto err_free_mem;
+ }
block[i].size = block_size;
}
@@ -100,8 +102,10 @@ struct hisi_acc_sgl_pool *hisi_acc_create_sgl_pool(struct device *dev,
block[i].sgl = dma_alloc_coherent(dev, remain_sgl * sgl_size,
&block[i].sgl_dma,
GFP_KERNEL);
- if (!block[i].sgl)
+ if (!block[i].sgl) {
+ dev_err(dev, "Fail to allocate remained hw SG buffer!\n");
goto err_free_mem;
+ }
block[i].size = remain_sgl * sgl_size;
}
@@ -216,16 +220,19 @@ hisi_acc_sg_buf_map_to_hw_sgl(struct device *dev,
sg_n = sg_nents(sgl);
sg_n_mapped = dma_map_sg(dev, sgl, sg_n, DMA_BIDIRECTIONAL);
- if (!sg_n_mapped)
+ if (!sg_n_mapped) {
+ dev_err(dev, "DMA mapping for SG error!\n");
return ERR_PTR(-EINVAL);
+ }
if (sg_n_mapped > pool->sge_nr) {
- dma_unmap_sg(dev, sgl, sg_n, DMA_BIDIRECTIONAL);
+ dev_err(dev, "the number of entries in input scatterlist is bigger than SGL pool setting.\n");
return ERR_PTR(-EINVAL);
}
curr_hw_sgl = acc_get_sgl(pool, index, &curr_sgl_dma);
if (IS_ERR(curr_hw_sgl)) {
+ dev_err(dev, "Get SGL error!\n");
dma_unmap_sg(dev, sgl, sg_n, DMA_BIDIRECTIONAL);
return ERR_PTR(-ENOMEM);
--
2.8.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 4/5] crypto: hisilicon/sgl - fix the soft sg map to hardware sg
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
` (2 preceding siblings ...)
2021-04-09 9:04 ` [PATCH v3 3/5] crypto: hisilicon/sgl - add some dfx logs Kai Ye
@ 2021-04-09 9:04 ` Kai Ye
2021-04-09 9:04 ` [PATCH v3 5/5] crypto: hisilicon/sgl - fix the sg buf unmap Kai Ye
2021-04-16 11:32 ` [PATCH v3 0/5] bug fix and clear coding style Herbert Xu
5 siblings, 0 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:04 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
The buffer of the hardware sge needs to be initialized by
soft sgl.
Signed-off-by: Kai Ye <yekai13@huawei.com>
---
drivers/crypto/hisilicon/sgl.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/crypto/hisilicon/sgl.c b/drivers/crypto/hisilicon/sgl.c
index d04e551..7f11e41 100644
--- a/drivers/crypto/hisilicon/sgl.c
+++ b/drivers/crypto/hisilicon/sgl.c
@@ -176,6 +176,7 @@ static void sg_map_to_hw_sg(struct scatterlist *sgl,
{
hw_sge->buf = sg_dma_address(sgl);
hw_sge->len = cpu_to_le32(sg_dma_len(sgl));
+ hw_sge->page_ctrl = sg_virt(sgl);
}
static void inc_hw_sgl_sge(struct hisi_acc_hw_sgl *hw_sgl)
--
2.8.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 5/5] crypto: hisilicon/sgl - fix the sg buf unmap
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
` (3 preceding siblings ...)
2021-04-09 9:04 ` [PATCH v3 4/5] crypto: hisilicon/sgl - fix the soft sg map to hardware sg Kai Ye
@ 2021-04-09 9:04 ` Kai Ye
2021-04-16 11:32 ` [PATCH v3 0/5] bug fix and clear coding style Herbert Xu
5 siblings, 0 replies; 7+ messages in thread
From: Kai Ye @ 2021-04-09 9:04 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, linux-kernel, yekai13
Add data cleared operation for sge data.
Signed-off-by: Kai Ye <yekai13@huawei.com>
---
drivers/crypto/hisilicon/sgl.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/hisilicon/sgl.c b/drivers/crypto/hisilicon/sgl.c
index 7f11e41..0572737 100644
--- a/drivers/crypto/hisilicon/sgl.c
+++ b/drivers/crypto/hisilicon/sgl.c
@@ -192,6 +192,18 @@ static void update_hw_sgl_sum_sge(struct hisi_acc_hw_sgl *hw_sgl, u16 sum)
hw_sgl->entry_sum_in_chain = cpu_to_le16(sum);
}
+static void clear_hw_sgl_sge(struct hisi_acc_hw_sgl *hw_sgl)
+{
+ struct acc_hw_sge *hw_sge = hw_sgl->sge_entries;
+ int i;
+
+ for (i = 0; i < le16_to_cpu(hw_sgl->entry_sum_in_sgl); i++) {
+ hw_sge[i].page_ctrl = NULL;
+ hw_sge[i].buf = 0;
+ hw_sge[i].len = 0;
+ }
+}
+
/**
* hisi_acc_sg_buf_map_to_hw_sgl - Map a scatterlist to a hw sgl.
* @dev: The device which hw sgl belongs to.
@@ -269,7 +281,7 @@ void hisi_acc_sg_buf_unmap(struct device *dev, struct scatterlist *sgl,
return;
dma_unmap_sg(dev, sgl, sg_nents(sgl), DMA_BIDIRECTIONAL);
-
+ clear_hw_sgl_sge(hw_sgl);
hw_sgl->entry_sum_in_chain = 0;
hw_sgl->entry_sum_in_sgl = 0;
hw_sgl->entry_length_in_sgl = 0;
--
2.8.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/5] bug fix and clear coding style
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
` (4 preceding siblings ...)
2021-04-09 9:04 ` [PATCH v3 5/5] crypto: hisilicon/sgl - fix the sg buf unmap Kai Ye
@ 2021-04-16 11:32 ` Herbert Xu
5 siblings, 0 replies; 7+ messages in thread
From: Herbert Xu @ 2021-04-16 11:32 UTC (permalink / raw)
To: Kai Ye; +Cc: linux-crypto, linux-kernel
On Fri, Apr 09, 2021 at 05:03:59PM +0800, Kai Ye wrote:
> Fixup coding style such as delete unneeded variable
> initialization. Add a comment for block size initialization.
> Add a data cleared operation in sg buf unmap, and other misc fix.
>
> v1 -> v2:
> 1. fix [PATCH v2] error in v1.
> 2. v1 use a macro replace of magic number, v2 use a comment
> for block size initialization.
> v2 -> v3:
> fix a sparse warning
>
> Kai Ye (5):
> crypto: hisilicon/sgl - add a comment for block size initialization
> crypto: hisilicon/sgl - delete unneeded variable initialization
> crypto: hisilicon/sgl - add some dfx logs
> crypto: hisilicon/sgl - fix the soft sg map to hardware sg
> crypto: hisilicon/sgl - fix the sg buf unmap
>
> drivers/crypto/hisilicon/sgl.c | 37 +++++++++++++++++++++++++++++++------
> 1 file changed, 31 insertions(+), 6 deletions(-)
All applied. Thanks.
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-04-16 11:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-09 9:03 [PATCH v3 0/5] bug fix and clear coding style Kai Ye
2021-04-09 9:04 ` [PATCH v3 1/5] crypto: hisilicon/sgl - add a comment for block size initialization Kai Ye
2021-04-09 9:04 ` [PATCH v3 2/5] crypto: hisilicon/sgl - delete unneeded variable initialization Kai Ye
2021-04-09 9:04 ` [PATCH v3 3/5] crypto: hisilicon/sgl - add some dfx logs Kai Ye
2021-04-09 9:04 ` [PATCH v3 4/5] crypto: hisilicon/sgl - fix the soft sg map to hardware sg Kai Ye
2021-04-09 9:04 ` [PATCH v3 5/5] crypto: hisilicon/sgl - fix the sg buf unmap Kai Ye
2021-04-16 11:32 ` [PATCH v3 0/5] bug fix and clear coding style Herbert Xu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.