crypto/caam_jr: fix caam sec era invalid issue
Checks
Commit Message
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
> 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
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"?
>
> 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>
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
@@ -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;
}
}