Message ID | 20190717152458.22337-9-andrew.smirnov@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Herbert Xu |
Headers | show |
Series | crypto: caam - Add i.MX8MQ support | expand |
On 7/17/2019 6:25 PM, Andrey Smirnov wrote: > In order to be able to configure CAAM pointer size at run-time, which > needed to support i.MX8MQ, which is 64-bit SoC with 32-bit pointer > size, convert CAAM_PTR_SZ to refer to a global variable of the same > name ("caam_ptr_sz") and adjust the rest of the code accordingly. No > functional change intended. > I am seeing compilation errors like: In file included from drivers/crypto/caam/ctrl.c:25:0: drivers/crypto/caam/qi.h:87:6: error: variably modified 'sh_desc' at file scope u32 sh_desc[MAX_SDLEN]; ^ Adding comments for this commit, since it looks like the fixes should be included here (related to DESC_JOB_IO_LEN vs. DESC_JOB_IO_LEN_MAX). Please make sure caam/qi and and caam/qi2 drivers are at least compile-tested. By caam/qi I am referring to: CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y/m and caam/qi2: CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=y/m Horia
On Tue, Jul 23, 2019 at 2:57 AM Horia Geanta <horia.geanta@nxp.com> wrote: > > On 7/17/2019 6:25 PM, Andrey Smirnov wrote: > > In order to be able to configure CAAM pointer size at run-time, which > > needed to support i.MX8MQ, which is 64-bit SoC with 32-bit pointer > > size, convert CAAM_PTR_SZ to refer to a global variable of the same > > name ("caam_ptr_sz") and adjust the rest of the code accordingly. No > > functional change intended. > > > I am seeing compilation errors like: > > In file included from drivers/crypto/caam/ctrl.c:25:0: > drivers/crypto/caam/qi.h:87:6: error: variably modified 'sh_desc' at file scope > u32 sh_desc[MAX_SDLEN]; > ^ > > Adding comments for this commit, since it looks like the fixes > should be included here (related to DESC_JOB_IO_LEN vs. DESC_JOB_IO_LEN_MAX). > > Please make sure caam/qi and and caam/qi2 drivers are at least compile-tested. > > By caam/qi I am referring to: > CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y/m > > and caam/qi2: > CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=y/m > Sorry about that, should be fixed in v7. Thanks, Andrey Smirnov
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index 43f18253e5b6..4dda2f50a724 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -74,7 +74,7 @@ #define CHACHAPOLY_DESC_JOB_IO_LEN (AEAD_DESC_JOB_IO_LEN + CAAM_CMD_SZ * 6) -#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN) +#define DESC_MAX_USED_BYTES (CAAM_DESC_BYTES_MAX - DESC_JOB_IO_LEN_MIN) #define DESC_MAX_USED_LEN (DESC_MAX_USED_BYTES / CAAM_CMD_SZ) struct caam_alg_entry { diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c index e4ac5d591ad6..955cb4d7c910 100644 --- a/drivers/crypto/caam/caamhash.c +++ b/drivers/crypto/caam/caamhash.c @@ -538,7 +538,7 @@ struct ahash_edesc { dma_addr_t sec4_sg_dma; int src_nents; int sec4_sg_bytes; - u32 hw_desc[DESC_JOB_IO_LEN / sizeof(u32)] ____cacheline_aligned; + u32 hw_desc[DESC_JOB_IO_LEN_MAX / sizeof(u32)] ____cacheline_aligned; struct sec4_sg_entry sec4_sg[0]; }; diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c index 561bcb535184..511f0b44e258 100644 --- a/drivers/crypto/caam/caamrng.c +++ b/drivers/crypto/caam/caamrng.c @@ -53,7 +53,7 @@ L1_CACHE_BYTES) /* length of descriptors */ -#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ * 2) +#define DESC_JOB_O_LEN (CAAM_CMD_SZ * 2 + CAAM_PTR_SZ_MAX * 2) #define DESC_RNG_LEN (3 * CAAM_CMD_SZ) /* Buffer, its dma address and lock */ diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 592ce4a05db8..e5eaaf1efe45 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -606,6 +606,8 @@ static int caam_probe(struct platform_device *pdev) } caam_imx = (bool)imx_soc_match; + caam_ptr_sz = sizeof(dma_addr_t); + /* Get configuration properties from device tree */ /* First, get register page */ ctrl = of_iomap(nprop, 0); diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h index 5988a26a2441..3a83a3332ba9 100644 --- a/drivers/crypto/caam/desc_constr.h +++ b/drivers/crypto/caam/desc_constr.h @@ -14,9 +14,14 @@ #define IMMEDIATE (1 << 23) #define CAAM_CMD_SZ sizeof(u32) -#define CAAM_PTR_SZ sizeof(dma_addr_t) +#define CAAM_PTR_SZ caam_ptr_sz +#define CAAM_PTR_SZ_MAX sizeof(dma_addr_t) +#define CAAM_PTR_SZ_MIN sizeof(u32) #define CAAM_DESC_BYTES_MAX (CAAM_CMD_SZ * MAX_CAAM_DESCSIZE) -#define DESC_JOB_IO_LEN (CAAM_CMD_SZ * 5 + CAAM_PTR_SZ * 3) +#define __DESC_JOB_IO_LEN(n) (CAAM_CMD_SZ * 5 + (n) * 3) +#define DESC_JOB_IO_LEN __DESC_JOB_IO_LEN(CAAM_PTR_SZ) +#define DESC_JOB_IO_LEN_MAX __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MAX) +#define DESC_JOB_IO_LEN_MIN __DESC_JOB_IO_LEN(CAAM_PTR_SZ_MIN) #ifdef DEBUG #define PRINT_POS do { printk(KERN_DEBUG "%02d: %s\n", desc_len(desc),\ @@ -37,6 +42,7 @@ (LDOFF_ENABLE_AUTO_NFIFO << LDST_OFFSET_SHIFT)) extern bool caam_little_end; +extern size_t caam_ptr_sz; /* * HW fetches 4 S/G table entries at a time, irrespective of how many entries diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c index 4f0d45865aa2..885cd364a01d 100644 --- a/drivers/crypto/caam/error.c +++ b/drivers/crypto/caam/error.c @@ -56,6 +56,9 @@ EXPORT_SYMBOL(caam_little_end); bool caam_imx; EXPORT_SYMBOL(caam_imx); +size_t caam_ptr_sz; +EXPORT_SYMBOL(caam_ptr_sz); + static const struct { u8 value; const char *error_text;
In order to be able to configure CAAM pointer size at run-time, which needed to support i.MX8MQ, which is 64-bit SoC with 32-bit pointer size, convert CAAM_PTR_SZ to refer to a global variable of the same name ("caam_ptr_sz") and adjust the rest of the code accordingly. No functional change intended. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Cc: Chris Spencer <christopher.spencer@sea.co.uk> Cc: Cory Tusar <cory.tusar@zii.aero> Cc: Chris Healy <cphealy@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Horia Geantă <horia.geanta@nxp.com> Cc: Aymen Sghaier <aymen.sghaier@nxp.com> Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/crypto/caam/caamalg.c | 2 +- drivers/crypto/caam/caamhash.c | 2 +- drivers/crypto/caam/caamrng.c | 2 +- drivers/crypto/caam/ctrl.c | 2 ++ drivers/crypto/caam/desc_constr.h | 10 ++++++++-- drivers/crypto/caam/error.c | 3 +++ 6 files changed, 16 insertions(+), 5 deletions(-)