crypto/caam_jr: fix caam sec era invalid issue

Message ID 1603100881-11504-1-git-send-email-g.singh@nxp.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series crypto/caam_jr: fix caam sec era invalid issue |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed

Commit Message

Gagandeep Singh Oct. 19, 2020, 9:48 a.m. UTC
  of_init() should be called before using any of_* APIs to retrieve
information from the device tree and if reading integer value
that must be converted to cpu endianness before using.

Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
 drivers/crypto/caam_jr/caam_jr.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
  

Comments

Akhil Goyal Oct. 19, 2020, 10:33 a.m. UTC | #1
> Subject: [PATCH] crypto/caam_jr: fix caam sec era invalid issue
> 
> of_init() should be called before using any of_* APIs to retrieve
> information from the device tree and if reading integer value
> that must be converted to cpu endianness before using.
> 
> Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> ---
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>

Thomas,
Can you pick this in RC1 directly as this is fixing a critical issue in one platform of NXP?

Thanks,
Akhil
  
Thomas Monjalon Oct. 19, 2020, 12:38 p.m. UTC | #2
19/10/2020 12:33, Akhil Goyal:
> > Subject: [PATCH] crypto/caam_jr: fix caam sec era invalid issue
> > 
> > of_init() should be called before using any of_* APIs to retrieve
> > information from the device tree and if reading integer value
> > that must be converted to cpu endianness before using.
> > 
> > Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
> > Cc: stable@dpdk.org
> > 
> > Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> > ---
> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
> 
> Thomas,
> Can you pick this in RC1 directly as this is fixing a critical issue in one platform of NXP?

It does not say what it fixes (or I am not able to understand).
What is "era"?
  
Akhil Goyal Oct. 19, 2020, 12:49 p.m. UTC | #3
> 
> 19/10/2020 12:33, Akhil Goyal:
> > > Subject: [PATCH] crypto/caam_jr: fix caam sec era invalid issue
> > >
> > > of_init() should be called before using any of_* APIs to retrieve
> > > information from the device tree and if reading integer value
> > > that must be converted to cpu endianness before using.
> > >
> > > Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> > > ---
> > Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
> >
> > Thomas,
> > Can you pick this in RC1 directly as this is fixing a critical issue in one platform
> of NXP?
> 
> It does not say what it fixes (or I am not able to understand).
> What is "era"?

ERA is the hardware block version for crypto. It may be different on each platform.
On one of the platform this value is not getting read properly.

Title and Description could be altered as below

crypto/caam_jr: fix device tree parsing for SEC_ERA

Previously, SEC_ERA was hardcoded and it was removed in [1].
Now when that hardcoded was removed, it is supposed to be
read from the device tree but it is not done correctly.
This patch calls a necessary API of_init() before using any
of_* APIs to retrieve information from the device tree and
if reading integer value that must be converted to cpu endianness
before using it.

[1] eef9e0412a84 ("drivers/crypto: fix build with -fno-common")
Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
  
Thomas Monjalon Oct. 19, 2020, 2:02 p.m. UTC | #4
19/10/2020 14:49, Akhil Goyal:
> > 
> > 19/10/2020 12:33, Akhil Goyal:
> > > > Subject: [PATCH] crypto/caam_jr: fix caam sec era invalid issue
> > > >
> > > > of_init() should be called before using any of_* APIs to retrieve
> > > > information from the device tree and if reading integer value
> > > > that must be converted to cpu endianness before using.
> > > >
> > > > Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> > > > ---
> > > Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
> > >
> > > Thomas,
> > > Can you pick this in RC1 directly as this is fixing a critical issue in one platform
> > of NXP?
> > 
> > It does not say what it fixes (or I am not able to understand).
> > What is "era"?
> 
> ERA is the hardware block version for crypto. It may be different on each platform.
> On one of the platform this value is not getting read properly.
> 
> Title and Description could be altered as below
> 
> crypto/caam_jr: fix device tree parsing for SEC_ERA
> 
> Previously, SEC_ERA was hardcoded and it was removed in [1].
> Now when that hardcoded was removed, it is supposed to be
> read from the device tree but it is not done correctly.
> This patch calls a necessary API of_init() before using any
> of_* APIs to retrieve information from the device tree and
> if reading integer value that must be converted to cpu endianness
> before using it.
> 
> [1] eef9e0412a84 ("drivers/crypto: fix build with -fno-common")
> Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>

Applied, thanks
  

Patch

diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c
index c004ec4..3fb3fe0 100644
--- a/drivers/crypto/caam_jr/caam_jr.c
+++ b/drivers/crypto/caam_jr/caam_jr.c
@@ -2388,6 +2388,8 @@  caam_jr_dev_init(const char *name,
 static int
 cryptodev_caam_jr_probe(struct rte_vdev_device *vdev)
 {
+	int ret;
+
 	struct rte_cryptodev_pmd_init_params init_params = {
 		"",
 		sizeof(struct sec_job_ring_t),
@@ -2404,6 +2406,12 @@  cryptodev_caam_jr_probe(struct rte_vdev_device *vdev)
 	input_args = rte_vdev_device_args(vdev);
 	rte_cryptodev_pmd_parse_input_args(&init_params, input_args);
 
+	ret = of_init();
+	if (ret) {
+		RTE_LOG(ERR, PMD,
+		"of_init failed\n");
+		return -EINVAL;
+	}
 	/* if sec device version is not configured */
 	if (!rta_get_sec_era()) {
 		const struct device_node *caam_node;
@@ -2414,7 +2422,7 @@  cryptodev_caam_jr_probe(struct rte_vdev_device *vdev)
 					NULL);
 			if (prop) {
 				rta_set_sec_era(
-					INTL_SEC_ERA(cpu_to_caam32(*prop)));
+					INTL_SEC_ERA(rte_be_to_cpu_32(*prop)));
 				break;
 			}
 		}