All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.