mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/2] extend engine group handling for Additional types
@ 2025-05-28 14:59 Amit Singh Tomar
  2025-05-28 14:59 ` [PATCH 1/2] crypto: octeontx2: Rework how engine group number is obtained Amit Singh Tomar
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Amit Singh Tomar @ 2025-05-28 14:59 UTC (permalink / raw)
  To: Srujana Challa, Bharat Bhushan, Herbert Xu, David S. Miller,
	Amit Singh Tomar, Kuan-Wei Chiu, Peter Zijlstra, Bjorn Helgaas,
	Philipp Stanner, Shashank Gupta, linux-crypto, linux-kernel,
	Tanmay Jagdale

The Cryptographic Accelerator Unit (CPT) on MARVELL platform supports
different engine groups to execute both symmetric and asymmetric
algorithms. This small patch set introduces minor enhancements to the
engine group handling logic to ensure the correct group numbers are
obtained for AE and SE.

patch(1/1) 
	* extend the otx2_cpt_get_kcrypto_eng_grp_num() API to support
	  retrieving engine group numbers for additional engine types.

patch(2/2)
	* Add support for retrieving the engine group number for the asymmetric
	  engine type.

Amit Singh Tomar (2):
  crypto: octeontx2: Rework how engine group number is obtained
  crypto: octeontx2: get engine group number for asymmetric engine

 .../marvell/octeontx2/otx2_cpt_reqmgr.h       |  3 ++-
 drivers/crypto/marvell/octeontx2/otx2_cptlf.h |  3 ++-
 .../marvell/octeontx2/otx2_cptvf_algs.c       |  6 +++--
 .../marvell/octeontx2/otx2_cptvf_main.c       | 26 +++++++++++++++----
 .../marvell/octeontx2/otx2_cptvf_mbox.c       |  7 ++++-
 .../marvell/octeontx2/otx2_cptvf_reqmgr.c     | 14 ++++++++--
 6 files changed, 47 insertions(+), 12 deletions(-)

-- 
2.48.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] crypto: octeontx2: Rework how engine group number is obtained
  2025-05-28 14:59 [PATCH 0/2] extend engine group handling for Additional types Amit Singh Tomar
@ 2025-05-28 14:59 ` Amit Singh Tomar
  2025-05-28 14:59 ` [PATCH 2/2] crypto: octeontx2: get engine group number for asymmetric engine Amit Singh Tomar
  2025-06-13  9:37 ` [PATCH 0/2] extend engine group handling for Additional types Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Amit Singh Tomar @ 2025-05-28 14:59 UTC (permalink / raw)
  To: Srujana Challa, Bharat Bhushan, Herbert Xu, David S. Miller,
	Amit Singh Tomar, Kuan-Wei Chiu, Peter Zijlstra, Bjorn Helgaas,
	Philipp Stanner, Shashank Gupta, linux-crypto, linux-kernel,
	Tanmay Jagdale

By default, otx2_cpt_get_kcrypto_eng_grp_num() returns the engine group
number of SE engine type. Add an engine type parameter to support
retrieving the engine group number for different engine types.

Since otx2_cpt_get_kcrypto_eng_grp_num() always returns the kernel crypto
engine group number, rename it to otx2_cpt_get_eng_grp_num().

Signed-off-by: Amit Singh Tomar <amitsinght@marvell.com>
---
 drivers/crypto/marvell/octeontx2/otx2_cpt_reqmgr.h  |  3 ++-
 drivers/crypto/marvell/octeontx2/otx2_cptlf.h       |  2 +-
 drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c  |  6 ++++--
 drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c  | 13 +++++++------
 drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c  |  5 ++++-
 .../crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c    | 12 ++++++++++--
 6 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/drivers/crypto/marvell/octeontx2/otx2_cpt_reqmgr.h b/drivers/crypto/marvell/octeontx2/otx2_cpt_reqmgr.h
index e27e849b01df..72473f0070f3 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cpt_reqmgr.h
+++ b/drivers/crypto/marvell/octeontx2/otx2_cpt_reqmgr.h
@@ -490,6 +490,7 @@ struct otx2_cptlf_wqe;
 int otx2_cpt_do_request(struct pci_dev *pdev, struct otx2_cpt_req_info *req,
 			int cpu_num);
 void otx2_cpt_post_process(struct otx2_cptlf_wqe *wqe);
-int otx2_cpt_get_kcrypto_eng_grp_num(struct pci_dev *pdev);
+int otx2_cpt_get_eng_grp_num(struct pci_dev *pdev,
+			     enum otx2_cpt_eng_type);
 
 #endif /* __OTX2_CPT_REQMGR_H */
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptlf.h b/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
index 6e004a5568d8..49ec2b92e86d 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
@@ -124,7 +124,7 @@ struct otx2_cptlfs_info {
 	struct cpt_hw_ops *ops;
 	u8 are_lfs_attached;	/* Whether CPT LFs are attached */
 	u8 lfs_num;		/* Number of CPT LFs */
-	u8 kcrypto_eng_grp_num;	/* Kernel crypto engine group number */
+	u8 kcrypto_se_eng_grp_num; /* Crypto symmetric engine group number */
 	u8 kvf_limits;          /* Kernel crypto limits */
 	atomic_t state;         /* LF's state. started/reset */
 	int blkaddr;            /* CPT blkaddr: BLKADDR_CPT0/BLKADDR_CPT1 */
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
index 7eb0bc13994d..8d9f394d6b50 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c
@@ -384,7 +384,8 @@ static inline int cpt_enc_dec(struct skcipher_request *req, u32 enc)
 	req_info->req_type = OTX2_CPT_ENC_DEC_REQ;
 	req_info->is_enc = enc;
 	req_info->is_trunc_hmac = false;
-	req_info->ctrl.s.grp = otx2_cpt_get_kcrypto_eng_grp_num(pdev);
+	req_info->ctrl.s.grp = otx2_cpt_get_eng_grp_num(pdev,
+							OTX2_CPT_SE_TYPES);
 
 	req_info->req.cptr = ctx->er_ctx.hw_ctx;
 	req_info->req.cptr_dma = ctx->er_ctx.cptr_dma;
@@ -1288,7 +1289,8 @@ static int cpt_aead_enc_dec(struct aead_request *req, u8 reg_type, u8 enc)
 	if (status)
 		return status;
 
-	req_info->ctrl.s.grp = otx2_cpt_get_kcrypto_eng_grp_num(pdev);
+	req_info->ctrl.s.grp = otx2_cpt_get_eng_grp_num(pdev,
+							OTX2_CPT_SE_TYPES);
 
 	/*
 	 * We perform an asynchronous send and once
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
index 56904bdfd6e8..79adc224066e 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
@@ -265,17 +265,18 @@ static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf)
 	u8 eng_grp_msk;
 
 	/* Get engine group number for symmetric crypto */
-	cptvf->lfs.kcrypto_eng_grp_num = OTX2_CPT_INVALID_CRYPTO_ENG_GRP;
+	cptvf->lfs.kcrypto_se_eng_grp_num = OTX2_CPT_INVALID_CRYPTO_ENG_GRP;
 	ret = otx2_cptvf_send_eng_grp_num_msg(cptvf, OTX2_CPT_SE_TYPES);
 	if (ret)
 		return ret;
 
-	if (cptvf->lfs.kcrypto_eng_grp_num == OTX2_CPT_INVALID_CRYPTO_ENG_GRP) {
-		dev_err(dev, "Engine group for kernel crypto not available\n");
-		ret = -ENOENT;
-		return ret;
+	if (cptvf->lfs.kcrypto_se_eng_grp_num ==
+		OTX2_CPT_INVALID_CRYPTO_ENG_GRP) {
+		dev_err(dev,
+			"Symmetric Engine group for crypto not available\n");
+		return -ENOENT;
 	}
-	eng_grp_msk = 1 << cptvf->lfs.kcrypto_eng_grp_num;
+	eng_grp_msk = 1 << cptvf->lfs.kcrypto_se_eng_grp_num;
 
 	ret = otx2_cptvf_send_kvf_limits_msg(cptvf);
 	if (ret)
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
index 931b72580fd9..f36d75f40014 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
@@ -75,6 +75,7 @@ static void process_pfvf_mbox_mbox_msg(struct otx2_cptvf_dev *cptvf,
 	struct otx2_cpt_caps_rsp *eng_caps;
 	struct cpt_rd_wr_reg_msg *rsp_reg;
 	struct msix_offset_rsp *rsp_msix;
+	u8 grp_num;
 	int i;
 
 	if (msg->id >= MBOX_MSG_MAX) {
@@ -122,7 +123,9 @@ static void process_pfvf_mbox_mbox_msg(struct otx2_cptvf_dev *cptvf,
 		break;
 	case MBOX_MSG_GET_ENG_GRP_NUM:
 		rsp_grp = (struct otx2_cpt_egrp_num_rsp *) msg;
-		cptvf->lfs.kcrypto_eng_grp_num = rsp_grp->eng_grp_num;
+		grp_num = rsp_grp->eng_grp_num;
+		if (rsp_grp->eng_type == OTX2_CPT_SE_TYPES)
+			cptvf->lfs.kcrypto_se_eng_grp_num = grp_num;
 		break;
 	case MBOX_MSG_GET_KVF_LIMITS:
 		rsp_limits = (struct otx2_cpt_kvf_limits_rsp *) msg;
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
index 426244107037..8b4ac269330a 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
@@ -391,9 +391,17 @@ void otx2_cpt_post_process(struct otx2_cptlf_wqe *wqe)
 			      &wqe->lfs->lf[wqe->lf_num].pqueue);
 }
 
-int otx2_cpt_get_kcrypto_eng_grp_num(struct pci_dev *pdev)
+int otx2_cpt_get_eng_grp_num(struct pci_dev *pdev,
+			     enum otx2_cpt_eng_type eng_type)
 {
 	struct otx2_cptvf_dev *cptvf = pci_get_drvdata(pdev);
 
-	return cptvf->lfs.kcrypto_eng_grp_num;
+	switch (eng_type) {
+	case OTX2_CPT_SE_TYPES:
+		return cptvf->lfs.kcrypto_se_eng_grp_num;
+	default:
+		dev_err(&cptvf->pdev->dev, "Unsupported engine type");
+		break;
+	}
+	return -ENXIO;
 }
-- 
2.48.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/2] crypto: octeontx2: get engine group number for asymmetric engine
  2025-05-28 14:59 [PATCH 0/2] extend engine group handling for Additional types Amit Singh Tomar
  2025-05-28 14:59 ` [PATCH 1/2] crypto: octeontx2: Rework how engine group number is obtained Amit Singh Tomar
@ 2025-05-28 14:59 ` Amit Singh Tomar
  2025-06-13  9:37 ` [PATCH 0/2] extend engine group handling for Additional types Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Amit Singh Tomar @ 2025-05-28 14:59 UTC (permalink / raw)
  To: Srujana Challa, Bharat Bhushan, Herbert Xu, David S. Miller,
	Amit Singh Tomar, Kuan-Wei Chiu, Peter Zijlstra, Bjorn Helgaas,
	Philipp Stanner, Shashank Gupta, linux-crypto, linux-kernel,
	Tanmay Jagdale

Cryptographic Accelerator Unit (CPT) support different engine groups, one
for asymmetric algorithms (only AE engines in this group), one for the
most common symmetric algorithms (all SE and all IE engines in this group),
and one for other symmetric algorithms (only SE engines in this group).

For symmetric engine (SE), we obtain the group number using
"MBOX_MSG_GET_ENG_GRP_NUM" mailbox. Let's follow a similar approach to
determine the group number for asymmetric engine (AE).

Signed-off-by: Amit Singh Tomar <amitsinght@marvell.com>
---
 drivers/crypto/marvell/octeontx2/otx2_cptlf.h   |  1 +
 .../crypto/marvell/octeontx2/otx2_cptvf_main.c  | 17 ++++++++++++++++-
 .../crypto/marvell/octeontx2/otx2_cptvf_mbox.c  |  2 ++
 .../marvell/octeontx2/otx2_cptvf_reqmgr.c       |  2 ++
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptlf.h b/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
index 49ec2b92e86d..1b9f75214d18 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptlf.h
@@ -125,6 +125,7 @@ struct otx2_cptlfs_info {
 	u8 are_lfs_attached;	/* Whether CPT LFs are attached */
 	u8 lfs_num;		/* Number of CPT LFs */
 	u8 kcrypto_se_eng_grp_num; /* Crypto symmetric engine group number */
+	u8 kcrypto_ae_eng_grp_num; /* Crypto asymmetric engine group number */
 	u8 kvf_limits;          /* Kernel crypto limits */
 	atomic_t state;         /* LF's state. started/reset */
 	int blkaddr;            /* CPT blkaddr: BLKADDR_CPT0/BLKADDR_CPT1 */
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
index 79adc224066e..c1c44a7b89fa 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
@@ -276,7 +276,22 @@ static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf)
 			"Symmetric Engine group for crypto not available\n");
 		return -ENOENT;
 	}
-	eng_grp_msk = 1 << cptvf->lfs.kcrypto_se_eng_grp_num;
+
+	/* Get engine group number for asymmetric crypto */
+	cptvf->lfs.kcrypto_ae_eng_grp_num = OTX2_CPT_INVALID_CRYPTO_ENG_GRP;
+	ret = otx2_cptvf_send_eng_grp_num_msg(cptvf, OTX2_CPT_AE_TYPES);
+	if (ret)
+		return ret;
+
+	if (cptvf->lfs.kcrypto_ae_eng_grp_num ==
+		OTX2_CPT_INVALID_CRYPTO_ENG_GRP) {
+		dev_err(dev,
+			"Asymmetric Engine group for crypto not available\n");
+		return -ENOENT;
+	}
+
+	eng_grp_msk = BIT(cptvf->lfs.kcrypto_se_eng_grp_num) |
+		      BIT(cptvf->lfs.kcrypto_ae_eng_grp_num);
 
 	ret = otx2_cptvf_send_kvf_limits_msg(cptvf);
 	if (ret)
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
index f36d75f40014..3078e2375d3b 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c
@@ -126,6 +126,8 @@ static void process_pfvf_mbox_mbox_msg(struct otx2_cptvf_dev *cptvf,
 		grp_num = rsp_grp->eng_grp_num;
 		if (rsp_grp->eng_type == OTX2_CPT_SE_TYPES)
 			cptvf->lfs.kcrypto_se_eng_grp_num = grp_num;
+		else if (rsp_grp->eng_type == OTX2_CPT_AE_TYPES)
+			cptvf->lfs.kcrypto_ae_eng_grp_num = grp_num;
 		break;
 	case MBOX_MSG_GET_KVF_LIMITS:
 		rsp_limits = (struct otx2_cpt_kvf_limits_rsp *) msg;
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
index 8b4ac269330a..e71494486c64 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_reqmgr.c
@@ -399,6 +399,8 @@ int otx2_cpt_get_eng_grp_num(struct pci_dev *pdev,
 	switch (eng_type) {
 	case OTX2_CPT_SE_TYPES:
 		return cptvf->lfs.kcrypto_se_eng_grp_num;
+	case OTX2_CPT_AE_TYPES:
+		return cptvf->lfs.kcrypto_ae_eng_grp_num;
 	default:
 		dev_err(&cptvf->pdev->dev, "Unsupported engine type");
 		break;
-- 
2.48.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] extend engine group handling for Additional types
  2025-05-28 14:59 [PATCH 0/2] extend engine group handling for Additional types Amit Singh Tomar
  2025-05-28 14:59 ` [PATCH 1/2] crypto: octeontx2: Rework how engine group number is obtained Amit Singh Tomar
  2025-05-28 14:59 ` [PATCH 2/2] crypto: octeontx2: get engine group number for asymmetric engine Amit Singh Tomar
@ 2025-06-13  9:37 ` Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Herbert Xu @ 2025-06-13  9:37 UTC (permalink / raw)
  To: Amit Singh Tomar
  Cc: Srujana Challa, Bharat Bhushan, David S. Miller, Kuan-Wei Chiu,
	Peter Zijlstra, Bjorn Helgaas, Philipp Stanner, Shashank Gupta,
	linux-crypto, linux-kernel, Tanmay Jagdale

On Wed, May 28, 2025 at 08:29:39PM +0530, Amit Singh Tomar wrote:
> The Cryptographic Accelerator Unit (CPT) on MARVELL platform supports
> different engine groups to execute both symmetric and asymmetric
> algorithms. This small patch set introduces minor enhancements to the
> engine group handling logic to ensure the correct group numbers are
> obtained for AE and SE.
> 
> patch(1/1) 
> 	* extend the otx2_cpt_get_kcrypto_eng_grp_num() API to support
> 	  retrieving engine group numbers for additional engine types.
> 
> patch(2/2)
> 	* Add support for retrieving the engine group number for the asymmetric
> 	  engine type.
> 
> Amit Singh Tomar (2):
>   crypto: octeontx2: Rework how engine group number is obtained
>   crypto: octeontx2: get engine group number for asymmetric engine
> 
>  .../marvell/octeontx2/otx2_cpt_reqmgr.h       |  3 ++-
>  drivers/crypto/marvell/octeontx2/otx2_cptlf.h |  3 ++-
>  .../marvell/octeontx2/otx2_cptvf_algs.c       |  6 +++--
>  .../marvell/octeontx2/otx2_cptvf_main.c       | 26 +++++++++++++++----
>  .../marvell/octeontx2/otx2_cptvf_mbox.c       |  7 ++++-
>  .../marvell/octeontx2/otx2_cptvf_reqmgr.c     | 14 ++++++++--
>  6 files changed, 47 insertions(+), 12 deletions(-)
> 
> -- 
> 2.48.1

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] 4+ messages in thread

end of thread, other threads:[~2025-06-13  9:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-28 14:59 [PATCH 0/2] extend engine group handling for Additional types Amit Singh Tomar
2025-05-28 14:59 ` [PATCH 1/2] crypto: octeontx2: Rework how engine group number is obtained Amit Singh Tomar
2025-05-28 14:59 ` [PATCH 2/2] crypto: octeontx2: get engine group number for asymmetric engine Amit Singh Tomar
2025-06-13  9:37 ` [PATCH 0/2] extend engine group handling for Additional types Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®