mainline/master bisection: baseline.dmesg.emerg on kontron-pitx-imx8m
A message that is not in the archive (sent off-list or not yet received): [email protected]
On Thu, Feb 23, 2023 at 12:25:45PM -0800, KernelCI bot wrote:
The KernelCI bisection bot found an issue in mainline with errors being displayed on boot on kontron-pitx-imx8m with a defconfig+crypto config which it bisected to 199354d7fb6e ("crypto: caam - Remove GFP_DMA and add DMA alignment padding"). We don't have a run from -next for defconfig+crypto today (yet, perhaps one will appear later).
The algorithms selftests are failing:
alg: self-tests for cbc(aes) using cbc-aes-caam failed (rc=-22)
alg: self-tests for cbc(des3_ede) using cbc-3des-caam failed (rc=-22)
alg: self-tests for cbc(des) using failed (rc=-22)
Full log showing the problem and backtraces at:
From run:
https://linux.kernelci.org/test/plan/id/63f7f38ad0ae3b27f28c86b4/
I've left the full report from the bot with a tag from it plus links to more details and a full bisect below:
Quoted 821 lines
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This automated bisection report was sent to you on the basis * * that you may be involved with the breaking commit it has * * found. No manual investigation has been done to verify it, * * and the root cause of the problem may be somewhere else. * * * * If you do send a fix, please include this trailer: * * Reported-by: "kernelci.org bot" <[email protected]> * * * * Hope this helps! ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
mainline/master bisection: baseline.dmesg.emerg on kontron-pitx-imx8m
Summary:
Start: 9fc2f99030b5 Merge tag 'nfsd-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux Plain log: https://storage.kernelci.org/mainline/master/v6.2-6669-g9fc2f99030b5/arm64/defconfig+crypto/gcc-10/lab-kontron/baseline-kontron-pitx-imx8m.txt HTML log: https://storage.kernelci.org/mainline/master/v6.2-6669-g9fc2f99030b5/arm64/defconfig+crypto/gcc-10/lab-kontron/baseline-kontron-pitx-imx8m.html Result: 199354d7fb6e crypto: caam - Remove GFP_DMA and add DMA alignment paddingChecks:
revert: PASS
verify: PASSParameters:
Tree: mainline URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Branch: master Target: kontron-pitx-imx8m CPU arch: arm64 Lab: lab-kontron Compiler: gcc-10 Config: defconfig+crypto Test case: baseline.dmesg.emergBreaking commit found:
-------------------------------------------------------------------------------
commit199354d7fb6eaa2cc5bb650af0bca624baffee35Author: Herbert Xu <[email protected]> Date: Fri Dec 30 13:21:38 2022 +0800crypto: caam - Remove
GFP_DMAand add DMA alignment padding
GFP_DMAdoes not guarantee that the returned memory is aligned for DMA. It should be removed where it is superfluous.However, kmalloc may start returning DMA-unaligned memory in future so fix this by adding the alignment by hand.
Signed-off-by Herbert Xu <[email protected]>drivers/crypto/caam/blob_gen.c +1
-1@@ -83,7 +83,7 @@ int caam_process_blob(struct caam_blob_priv *priv, output_len = info->input_len -CAAM_BLOB_OVERHEAD ; } - desc =kzalloc (CAAM_BLOB_DESC_BYTES_MAX ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_BLOB_DESC_BYTES_MAX ,GFP_KERNEL );if (!desc)return -ENOMEM ;drivers/crypto/caam/caamalg.c +10
-6@@ -59,6 +59,8 @@#include <crypto/engine.h> #include <crypto/xts.h> #include <asm/unaligned.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> /* * crypto alg @@ -1379,8 +1381,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req, sec4_sg_bytes = sec4_sg_len *sizeof (struct sec4_sg_entry );/* allocate space for base edesc and hw desc commands, link tables */ - edesc =kzalloc (sizeof (*edesc) + desc_bytes + sec4_sg_bytes, -GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + desc_bytes + sec4_sg_bytes, flags);if (!edesc) {caam_unmap (jrdev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,0 ,0 );@@ -1608,6 +1609,7 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req,u8 *iv;int ivsize =crypto_skcipher_ivsize (skcipher);int dst_sg_idx, sec4_sg_ents, sec4_sg_bytes; +unsigned int aligned_size; src_nents =sg_nents_for_len (req->src, req->cryptlen);if (unlikely (src_nents <0 )) {@@ -1681,15 +1683,18 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req,/* * allocate space for base edesc and hw desc commands, link tables, IV */ - edesc =kzalloc (sizeof (*edesc) + desc_bytes + sec4_sg_bytes + ivsize, -GFP_DMA | flags); -if (!edesc) { + aligned_size = ALIGN(ivsize, __alignof__(*edesc)); + aligned_size +=sizeof (*edesc) + desc_bytes + sec4_sg_bytes; + aligned_size =ALIGN (aligned_size,dma_get_cache_alignment ()); + iv =kzalloc (aligned_size, flags); +if (!iv) {dev_err (jrdev,"could not allocate extended descriptor\n" );caam_unmap (jrdev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,0 ,0 );return ERR_PTR (-ENOMEM ); } + edesc = (void *)(iv + ALIGN(ivsize, __alignof__(*edesc))); edesc->src_nents = src_nents; edesc->dst_nents = dst_nents; edesc->mapped_src_nents = mapped_src_nents;@@ -1701,7 +1706,6 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req,/* Make sure IV is located in a DMAable area */ if (ivsize) { - iv = (u8 *)edesc->sec4_sg + sec4_sg_bytes;memcpy (iv, req->iv, ivsize); iv_dma =dma_map_single (jrdev, iv, ivsize,DMA_BIDIRECTIONAL );drivers/crypto/caam/caamalg_qi.c +10
-6@@ -20,6 +20,8 @@#include "caamalg_desc.h" #include <crypto/xts.h> #include <asm/unaligned.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> /* * crypto alg @@ -959,7 +961,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req,return (struct aead_edesc *)drv_ctx;/* allocate space for base edesc and hw desc commands, link tables */ - edesc =qi_cache_alloc (GFP_DMA | flags); + edesc =qi_cache_alloc (flags);if (unlikely (!edesc)) {dev_err (qidev,"could not allocate extended descriptor\n" );return ERR_PTR (-ENOMEM );@@ -1317,8 +1319,9 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, qm_sg_ents =1 +pad_sg_nents (qm_sg_ents); qm_sg_bytes = qm_sg_ents *sizeof (struct qm_sg_entry ); -if (unlikely (offsetof(struct skcipher_edesc , sgt) + qm_sg_bytes + - ivsize >CAAM_QI_MEMCACHE_SIZE )) { + if (unlikely(ALIGN(ivsize, __alignof__(*edesc)) + + offsetof(struct skcipher_edesc , sgt) + qm_sg_bytes > +CAAM_QI_MEMCACHE_SIZE )) {dev_err (qidev,"No space for %d S/G entries and/or %dB IV\n" , qm_sg_ents, ivsize); caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents, 0,@@ -1327,17 +1330,18 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, }/* allocate space for base edesc, link tables and IV */ - edesc =qi_cache_alloc (GFP_DMA | flags); -if (unlikely (!edesc)) { + iv =qi_cache_alloc (flags); +if (unlikely (!iv)) {dev_err (qidev,"could not allocate extended descriptor\n" );caam_unmap (qidev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,DMA_NONE ,0 ,0 );return ERR_PTR (-ENOMEM ); } + edesc = (void *)(iv + ALIGN(ivsize, __alignof__(*edesc))); +/* Make sure IV is located in a DMAable area */ sg_table = &edesc->sgt[0 ]; - iv = (u8 *)(sg_table + qm_sg_ents);memcpy (iv, req->iv, ivsize); iv_dma =dma_map_single (qidev, iv, ivsize,DMA_BIDIRECTIONAL );drivers/crypto/caam/caamalg_qi2.c +29
-19@@ -16,7 +16,9 @@#include "caamalg_desc.h" #include "caamhash_desc.h" #include "dpseci-debugfs.h" +#include <linux/dma-mapping.h> #include <linux/fsl/mc.h> +#include <linux/kernel.h> #include <soc/fsl/dpaa2-io.h> #include <soc/fsl/dpaa2-fd.h> #include <crypto/xts.h> @@ -370,7 +372,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req,struct dpaa2_sg_entry *sg_table;/* allocate space for base edesc, link tables and IV */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (unlikely (!edesc)) {dev_err (dev,"could not allocate extended descriptor\n" );return ERR_PTR (-ENOMEM );@@ -1189,7 +1191,7 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req) }/* allocate space for base edesc, link tables and IV */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (unlikely (!edesc)) {dev_err (dev,"could not allocate extended descriptor\n" ); caam_unmap(dev, req->src, req->dst, src_nents, dst_nents, 0,@@ -3220,14 +3222,14 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,int ret = -ENOMEM ;struct dpaa2_fl_entry *in_fle, *out_fle; - req_ctx =kzalloc (sizeof (*req_ctx),GFP_KERNEL |GFP_DMA ); + req_ctx =kzalloc (sizeof (*req_ctx),GFP_KERNEL );if (!req_ctx)return -ENOMEM ; in_fle = &req_ctx->fd_flt[1 ]; out_fle = &req_ctx->fd_flt[0 ]; - flc =kzalloc (sizeof (*flc),GFP_KERNEL |GFP_DMA ); + flc =kzalloc (sizeof (*flc),GFP_KERNEL );if (!flc) goto err_flc;@@ -3316,7 +3318,13 @@ static int ahash_setkey(struct crypto_ahash *ahash, const u8 *key,dev_dbg (ctx->dev,"keylen %d blocksize %d\n" , keylen, blocksize);if (keylen > blocksize) { - hashed_key =kmemdup (key, keylen,GFP_KERNEL |GFP_DMA ); +unsigned int aligned_len = +ALIGN (keylen,dma_get_cache_alignment ()); + +if (aligned_len < keylen) +return -EOVERFLOW ; + + hashed_key =kmemdup (key, aligned_len,GFP_KERNEL );if (!hashed_key)return -ENOMEM ; ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);@@ -3560,7 +3568,7 @@ static int ahash_update_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );@@ -3654,7 +3662,7 @@ static int ahash_final_ctx(struct ahash_request *req)int ret;/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc)return -ENOMEM ;@@ -3743,7 +3751,7 @@ static int ahash_finup_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );return -ENOMEM ;@@ -3836,7 +3844,7 @@ static int ahash_digest(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );return ret;@@ -3913,7 +3921,7 @@ static int ahash_final_no_ctx(struct ahash_request *req)int ret = -ENOMEM ;/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc)return ret;@@ -4012,7 +4020,7 @@ static int ahash_update_no_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );@@ -4125,7 +4133,7 @@ static int ahash_finup_no_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );return ret;@@ -4230,7 +4238,7 @@ static int ahash_update_first(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );@@ -4926,6 +4934,7 @@ static int dpaa2_dpseci_congestion_setup(struct dpaa2_caam_priv *priv, {struct dpseci_congestion_notification_cfg cong_notif_cfg = {0 };struct device *dev = priv->dev; +unsigned int alignmask;int err;/* @@ -4936,13 +4945,14 @@ static int dpaa2_dpseci_congestion_setup(struct dpaa2_caam_priv *priv, !(priv->dpseci_attr.options & DPSECI_OPT_HAS_CG))return 0 ; - priv->cscn_mem =kzalloc (DPAA2_CSCN_SIZE +DPAA2_CSCN_ALIGN , -GFP_KERNEL |GFP_DMA ); + alignmask =DPAA2_CSCN_ALIGN -1 ; + alignmask |=dma_get_cache_alignment () -1 ; + priv->cscn_mem =kzalloc (ALIGN (DPAA2_CSCN_SIZE , alignmask +1 ), +GFP_KERNEL );if (!priv->cscn_mem)return -ENOMEM ; - priv->cscn_mem_aligned =PTR_ALIGN (priv->cscn_mem,DPAA2_CSCN_ALIGN ); - priv->cscn_dma =dma_map_single (dev, priv->cscn_mem_aligned, + priv->cscn_dma =dma_map_single (dev, priv->cscn_mem,DPAA2_CSCN_SIZE ,DMA_FROM_DEVICE );if (dma_mapping_error (dev, priv->cscn_dma)) {dev_err (dev,"Error mapping CSCN memory area\n" );@@ -5174,7 +5184,7 @@ static int dpaa2_caam_probe(struct fsl_mc_device *dpseci_dev) priv->domain =iommu_get_domain_for_dev (dev); qi_cache =kmem_cache_create ("dpaa2_caamqicache" ,CAAM_QI_MEMCACHE_SIZE , -0 ,SLAB_CACHE_DMA ,NULL ); +0 ,0 ,NULL );if (!qi_cache) {dev_err (dev,"Can't allocate SEC cache\n" );return -ENOMEM ;@@ -5451,7 +5461,7 @@ int dpaa2_caam_enqueue(struct device *dev, struct caam_request *req)dma_sync_single_for_cpu (priv->dev, priv->cscn_dma,DPAA2_CSCN_SIZE ,DMA_FROM_DEVICE ); -if (unlikely (dpaa2_cscn_state_congested (priv->cscn_mem_aligned))) { +if (unlikely (dpaa2_cscn_state_congested (priv->cscn_mem))) {dev_dbg_ratelimited (dev,"Dropping request\n" );return -EBUSY ; }drivers/crypto/caam/caamalg_qi2.h +4
-6@@ -7,13 +7,14 @@#ifndef _CAAMALG_QI2_H_#define _CAAMALG_QI2_H_ +#include <crypto/internal/skcipher.h> +#include <linux/compiler_attributes.h> #include <soc/fsl/dpaa2-io.h> #include <soc/fsl/dpaa2-fd.h> #include <linux/threads.h> #include <linux/netdevice.h> #include "dpseci.h" #include "desc_constr.h" -#include <crypto/skcipher.h> #define DPAA2_CAAM_STORE_SIZE 16/* NAPI weight *must* be a multiple of the store size. */ @@ -36,8 +37,6 @@* @tx_queue_attr: array of Tx queue attributes * @cscn_mem: pointer to memory region containing the congestion SCN * it's size is larger than to accommodate alignment -* @cscn_mem_aligned: pointer to congestion SCN; it is computed as -* PTR_ALIGN(cscn_mem, DPAA2_CSCN_ALIGN) * @cscn_dma: dma address used by the QMAN to write CSCN messages * @dev: device associated with the DPSECI object * @mc_io: pointer to MC portal's I/O object @@ -58,7 +57,6 @@ struct dpaa2_caam_priv {/* congestion */ void *cscn_mem; -void *cscn_mem_aligned;dma_addr_t cscn_dma;struct device *dev;@@ -158,7 +156,7 @@ struct ahash_edesc {struct caam_flc {u32 flc[16 ];u32 sh_desc[MAX_SDLEN ]; -}____cacheline_aligned ; +}__aligned(CRYPTO_DMA_ALIGN) ;enum optype {ENCRYPT =0 ,@@ -180,7 +178,7 @@ enum optype {* @edesc: extended descriptor; points to one of {skcipher,aead}_edesc */ struct caam_request { -struct dpaa2_fl_entry fd_flt[2 ]; +struct dpaa2_fl_entry fd_flt[2 ]__aligned(CRYPTO_DMA_ALIGN) ;dma_addr_t fd_flt_dma;struct caam_flc *flc;dma_addr_t flc_dma;drivers/crypto/caam/caamhash.c +11
-3@@ -66,6 +66,8 @@#include "key_gen.h" #include "caamhash_desc.h" #include <crypto/engine.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #define CAAM_CRA_PRIORITY 3000@@ -365,7 +367,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,dma_addr_t key_dma;int ret; - desc =kmalloc (CAAM_CMD_SZ *8 +CAAM_PTR_SZ *2 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *8 +CAAM_PTR_SZ *2 ,GFP_KERNEL );if (!desc) {dev_err (jrdev,"unable to allocate key input memory\n" );return -ENOMEM ;@@ -432,7 +434,13 @@ static int ahash_setkey(struct crypto_ahash *ahash,dev_dbg (jrdev,"keylen %d\n" , keylen);if (keylen > blocksize) { - hashed_key =kmemdup (key, keylen,GFP_KERNEL |GFP_DMA ); +unsigned int aligned_len = +ALIGN (keylen,dma_get_cache_alignment ()); + +if (aligned_len < keylen) +return -EOVERFLOW ; + + hashed_key =kmemdup (key, keylen,GFP_KERNEL );if (!hashed_key)return -ENOMEM ; ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);@@ -702,7 +710,7 @@ static struct ahash_edesc *ahash_edesc_alloc(struct ahash_request *req,struct ahash_edesc *edesc;unsigned int sg_size = sg_num *sizeof (struct sec4_sg_entry ); - edesc =kzalloc (sizeof (*edesc) + sg_size,GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + sg_size, flags);if (!edesc) {dev_err (ctx->jrdev,"could not allocate extended descriptor\n" );return NULL ;drivers/crypto/caam/caampkc.c +17
-14@@ -16,6 +16,8 @@#include "desc_constr.h" #include "sg_sw_sec4.h" #include "caampkc.h" +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #define DESC_RSA_PUB_LEN (2 * CAAM_CMD_SZ + SIZEOF_RSA_PUB_PDB)#define DESC_RSA_PRIV_F1_LEN (2 * CAAM_CMD_SZ + \@@ -310,8 +312,7 @@ static struct rsa_edesc *rsa_edesc_alloc(struct akcipher_request *req, sec4_sg_bytes = sec4_sg_len *sizeof (struct sec4_sg_entry );/* allocate space for base edesc, hw desc commands and link tables */ - edesc =kzalloc (sizeof (*edesc) + desclen + sec4_sg_bytes, -GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + desclen + sec4_sg_bytes, flags);if (!edesc) goto dst_fail;@@ -898,7 +899,7 @@ static u8 *caam_read_rsa_crt(const u8 *ptr, size_t nbytes, size_t dstlen)if (!nbytes)return NULL ; - dst =kzalloc (dstlen,GFP_DMA |GFP_KERNEL ); + dst =kzalloc (dstlen,GFP_KERNEL );if (!dst)return NULL ;@@ -910,7 +911,7 @@ static u8 *caam_read_rsa_crt(const u8 *ptr, size_t nbytes, size_t dstlen)/** * caam_read_raw_data - Read a raw byte stream as a positive integer. * The function skips buffer's leading zeros, copies the remained data -* to a buffer allocated in the GFP_DMA | GFP_KERNEL zone and returns +* to a buffer allocated in the GFP_KERNEL zone and returns * the address of the new buffer. * * @buf : The data to read @@ -923,7 +924,7 @@ static inline u8 *caam_read_raw_data(const u8 *buf, size_t *nbytes)if (!*nbytes)return NULL ; -return kmemdup (buf, *nbytes,GFP_DMA |GFP_KERNEL ); +return kmemdup (buf, *nbytes,GFP_KERNEL ); }static int caam_rsa_check_key_length (unsigned int len)@@ -949,13 +950,13 @@ static int caam_rsa_set_pub_key(struct crypto_akcipher *tfm, const void *key,return ret;/* Copy key in DMA zone */ - rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_KERNEL );if (!rsa_key->e) goto err;/* * Skip leading zeros and copy the positive integer to a buffer -* allocated in the GFP_DMA | GFP_KERNEL zone. The decryption descriptor +* allocated in the GFP_KERNEL zone. The decryption descriptor * expects a positive integer for the RSA modulus and uses its length as * decryption output length. */ @@ -983,6 +984,7 @@ static void caam_rsa_set_priv_key_form(struct caam_rsa_ctx *ctx,struct caam_rsa_key *rsa_key = &ctx->key;size_t p_sz = raw_key->p_sz;size_t q_sz = raw_key->q_sz; +unsigned aligned_size; rsa_key->p =caam_read_raw_data (raw_key->p, &p_sz);if (!rsa_key->p)@@ -994,11 +996,13 @@ static void caam_rsa_set_priv_key_form(struct caam_rsa_ctx *ctx, goto free_p; rsa_key->q_sz = q_sz; - rsa_key->tmp1 =kzalloc (raw_key->p_sz,GFP_DMA |GFP_KERNEL ); + aligned_size =ALIGN (raw_key->p_sz,dma_get_cache_alignment ()); + rsa_key->tmp1 =kzalloc (aligned_size,GFP_KERNEL );if (!rsa_key->tmp1) goto free_q; - rsa_key->tmp2 =kzalloc (raw_key->q_sz,GFP_DMA |GFP_KERNEL ); + aligned_size =ALIGN (raw_key->q_sz,dma_get_cache_alignment ()); + rsa_key->tmp2 =kzalloc (aligned_size,GFP_KERNEL );if (!rsa_key->tmp2) goto free_tmp1;@@ -1051,17 +1055,17 @@ static int caam_rsa_set_priv_key(struct crypto_akcipher *tfm, const void *key,return ret;/* Copy key in DMA zone */ - rsa_key->d =kmemdup (raw_key.d, raw_key.d_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->d =kmemdup (raw_key.d, raw_key.d_sz,GFP_KERNEL );if (!rsa_key->d) goto err; - rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_KERNEL );if (!rsa_key->e) goto err;/* * Skip leading zeros and copy the positive integer to a buffer -* allocated in the GFP_DMA | GFP_KERNEL zone. The decryption descriptor +* allocated in the GFP_KERNEL zone. The decryption descriptor * expects a positive integer for the RSA modulus and uses its length as * decryption output length. */ @@ -1185,8 +1189,7 @@ int caam_pkc_init(struct device *ctrldev)return 0 ;/* allocate zero buffer, used for padding input */ - zero_buffer =kzalloc (CAAM_RSA_MAX_INPUT_SIZE -1 ,GFP_DMA | -GFP_KERNEL ); + zero_buffer =kzalloc (CAAM_RSA_MAX_INPUT_SIZE -1 ,GFP_KERNEL );if (!zero_buffer)return -ENOMEM ;drivers/crypto/caam/caamprng.c +9
-3@@ -8,6 +8,8 @@#include <linux/completion.h> #include <crypto/internal/rng.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #include "compat.h" #include "regs.h" #include "intern.h" @@ -75,6 +77,7 @@ static int caam_prng_generate(struct crypto_rng *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int dlen) { + unsigned int aligned_dlen = ALIGN(dlen, dma_get_cache_alignment());struct caam_prng_ctx ctx;struct device *jrdev;dma_addr_t dst_dma;@@ -82,7 +85,10 @@ static int caam_prng_generate(struct crypto_rng *tfm,u8 *buf;int ret; - buf =kzalloc (dlen,GFP_KERNEL ); +if (aligned_dlen < dlen) +return -EOVERFLOW ; + + buf =kzalloc (aligned_dlen,GFP_KERNEL );if (!buf)return -ENOMEM ;@@ -94,7 +100,7 @@ static int caam_prng_generate(struct crypto_rng *tfm,return ret; } - desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL );if (!desc) { ret = -ENOMEM ; goto out1;@@ -156,7 +162,7 @@ static int caam_prng_seed(struct crypto_rng *tfm,return ret; } - desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL );if (!desc) {caam_jr_free (jrdev);return -ENOMEM ;drivers/crypto/caam/caamrng.c +7
-4@@ -12,6 +12,8 @@#include <linux/hw_random.h> #include <linux/completion.h> #include <linux/atomic.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #include <linux/kfifo.h> #include "compat.h" @@ -176,17 +178,18 @@ static int caam_init(struct hwrng *rng)int err; ctx->desc_sync =devm_kzalloc (ctx->ctrldev,CAAM_RNG_DESC_LEN , -GFP_DMA |GFP_KERNEL ); +GFP_KERNEL );if (!ctx->desc_sync)return -ENOMEM ; ctx->desc_async =devm_kzalloc (ctx->ctrldev,CAAM_RNG_DESC_LEN , -GFP_DMA |GFP_KERNEL ); +GFP_KERNEL );if (!ctx->desc_async)return -ENOMEM ; -if (kfifo_alloc (&ctx->fifo,CAAM_RNG_MAX_FIFO_STORE_SIZE , -GFP_DMA |GFP_KERNEL )) +if (kfifo_alloc (&ctx->fifo,ALIGN (CAAM_RNG_MAX_FIFO_STORE_SIZE , +dma_get_cache_alignment ()), +GFP_KERNEL ))return -ENOMEM ;INIT_WORK (&ctx->worker, caam_rng_worker);drivers/crypto/caam/ctrl.c +2
-2@@ -199,7 +199,7 @@ static int deinstantiate_rng(struct device *ctrldev, int state_handle_mask)u32 *desc, status;int sh_idx, ret =0 ; - desc =kmalloc (CAAM_CMD_SZ *3 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *3 ,GFP_KERNEL );if (!desc)return -ENOMEM ;@@ -276,7 +276,7 @@ static int instantiate_rng(struct device *ctrldev, int state_handle_mask,int ret =0 , sh_idx; ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl; - desc =kmalloc (CAAM_CMD_SZ *7 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *7 ,GFP_KERNEL );if (!desc)return -ENOMEM ;drivers/crypto/caam/key_gen.c +1
-1@@ -64,7 +64,7 @@ int gen_split_key(struct device *jrdev, u8 *key_out,if (local_max > max_keylen)return -EINVAL ; - desc =kmalloc (CAAM_CMD_SZ *6 +CAAM_PTR_SZ *2 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *6 +CAAM_PTR_SZ *2 ,GFP_KERNEL );if (!desc) {dev_err (jrdev,"unable to allocate key input memory\n" );return ret;drivers/crypto/caam/qi.c +2
-2@@ -614,7 +614,7 @@ static int alloc_rsp_fq_cpu(struct device *qidev, unsigned int cpu)struct qman_fq *fq;int ret; - fq =kzalloc (sizeof (*fq),GFP_KERNEL |GFP_DMA ); + fq =kzalloc (sizeof (*fq),GFP_KERNEL );if (!fq)return -ENOMEM ;@@ -756,7 +756,7 @@ int caam_qi_init(struct platform_device *caam_pdev) } qi_cache =kmem_cache_create ("caamqicache" ,CAAM_QI_MEMCACHE_SIZE ,0 , -SLAB_CACHE_DMA ,NULL ); +0 ,NULL );if (!qi_cache) {dev_err (qidev,"Can't allocate CAAM cache\n" );free_rsp_fqs ();drivers/crypto/caam/qi.h +8
-5@@ -9,6 +9,8 @@#ifndef __QI_H__#define __QI_H__ +#include <crypto/algapi.h> +#include <linux/compiler_attributes.h> #include <soc/fsl/qman.h> #include "compat.h" #include "desc.h" @@ -58,8 +60,10 @@ enum optype {* @qidev: device pointer for CAAM/QI backend */ struct caam_drv_ctx { -u32 prehdr[2 ]; -u32 sh_desc[MAX_SDLEN ]; +struct { +u32 prehdr[2 ]; +u32 sh_desc[MAX_SDLEN ]; + }__aligned(CRYPTO_DMA_ALIGN) ;dma_addr_t context_a;struct qman_fq *req_fq;struct qman_fq *rsp_fq;@@ -67,7 +71,7 @@ struct caam_drv_ctx {int cpu;enum optype op_type;struct device *qidev; -}____cacheline_aligned ; +};/** * caam_drv_req - The request structure the driver application should fill while @@ -88,7 +92,7 @@ struct caam_drv_req {struct caam_drv_ctx *drv_ctx;caam_qi_cbk cbk;void *app_ctx; -}____cacheline_aligned ; +}__aligned(CRYPTO_DMA_ALIGN) ;/** * caam_drv_ctx_init - Initialise a CAAM/QI driver context ------------------------------------------------------------------------------- Git bisection log:
-------------------------------------------------------------------------------
git bisect start
# good: [1f2d9ffc7a5f916935749ffc6e93fb33bfe94d2f] Merge tag 'sched-core-2023-02-20' ofgit://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good1f2d9ffc7a5f916935749ffc6e93fb33bfe94d2f
# bad: [9fc2f99030b55027d84723b0dcbbe9f7e21b9c6c] Merge tag 'nfsd-6.3' ofgit://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
git bisect bad9fc2f99030b55027d84723b0dcbbe9f7e21b9c6c
# good: [d1fabc68f8e0541d41657096dc713cb01775652d] Mergegit://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
git bisect goodd1fabc68f8e0541d41657096dc713cb01775652d
# bad: [f3dd0c53370e70c0f9b7e931bbec12916f3bb8cc] bpf: add missing header file include
git bisect badf3dd0c53370e70c0f9b7e931bbec12916f3bb8cc
# skip: [877934769e5b91798d304d4641647900ee614ce8] Merge tag 'x86_cpu_for_v6.3_rc1' ofgit://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect skip877934769e5b91798d304d4641647900ee614ce8
# good: [a5c926acd03aacbf558605f3352939dda86c8808] Merge back Intel thermal control changes for 6.3.
git bisect gooda5c926acd03aacbf558605f3352939dda86c8808
# bad: [555c5661317e9c3090b9d181106d8bc31dd8e29a] crypto: sahara - Userequest_completehelpers
git bisect bad555c5661317e9c3090b9d181106d8bc31dd8e29a
# bad: [d52b0c780c1f8cdd0cef9c6e683ab568d04bb19d] Revert "crypto: rsa-pkcs1pad - ReplaceGFP_ATOMICwithGFP_KERNELinpkcs1pad_encrypt_sign_complete" git bisect badd52b0c780c1f8cdd0cef9c6e683ab568d04bb19d
# bad: [2f1cf4e50c956f882c9fc209c7cded832b67b8a3] crypto: aspeed - Add ACRY RSA driver
git bisect bad2f1cf4e50c956f882c9fc209c7cded832b67b8a3
# good: [1ce94a8c2c3721be1d9bc85fd38fc8c520aa37d6] crypto: testmgr - disallow plain cbcmac(aes) in FIPS mode
git bisect good1ce94a8c2c3721be1d9bc85fd38fc8c520aa37d6
# bad: [37d8d3ae7a58cb16fa3f4f1992d2ee36bc621438] crypto: x86/aria - implement aria-avx2
git bisect bad37d8d3ae7a58cb16fa3f4f1992d2ee36bc621438
# bad: [8e613cec25196b51601dfac50c5bf229acd72bc6] crypto: talitos - RemoveGFP_DMAand add DMA alignment padding
git bisect bad8e613cec25196b51601dfac50c5bf229acd72bc6
# good: [c27b2d2012e1826674255b9e45b61c172a267e1c] crypto: testmgr - allow ecdsa-nist-p256 and -p384 in FIPS mode
git bisect goodc27b2d2012e1826674255b9e45b61c172a267e1c
# bad: [199354d7fb6eaa2cc5bb650af0bca624baffee35] crypto: caam - RemoveGFP_DMAand add DMA alignment padding
git bisect bad199354d7fb6eaa2cc5bb650af0bca624baffee35# first bad commit: [199354d7fb6eaa2cc5bb650af0bca624baffee35] crypto: caam - Remove GFP_DMA and add DMA alignment padding --------------------------------------------------------------------------------=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group. View/Reply Online (#38627): https://groups.io/g/kernelci-results/message/38627
Mute This Topic: https://groups.io/mt/97192113/1131744
Group Owner: [email protected]
Unsubscribe: https://groups.io/g/kernelci-results/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-
[+ Heiko as the owner of the board]
Am 2023-02-24 14:03, schrieb Mark Brown:
Quoted 911 lines · KernelCI bot
The KernelCI bisection bot found an issue in mainline with errors being displayed on boot on kontron-pitx-imx8m with a defconfig+crypto config which it bisected to
199354d7fb6e("crypto: caam - RemoveGFP_DMAand add DMA alignment padding"). We don't have a run from -next for defconfig+crypto today (yet, perhaps one will appear later).The algorithms selftests are failing:
alg: self-tests for cbc(aes) using cbc-aes-caam failed (rc=-22)
alg: self-tests forcbc(des3_ede)using cbc-3des-caam failed (rc=-22)
alg: self-tests for cbc(des) using failed (rc=-22)Full log showing the problem and backtraces at:
From run:
https://linux.kernelci.org/test/plan/id/63f7f38ad0ae3b27f28c86b4/
I've left the full report from the bot with a tag from it plus links to more details and a full bisect below:
Quoted 885 lines
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This automated bisection report was sent to you on the basis * * that you may be involved with the breaking commit it has * * found. No manual investigation has been done to verify it, * * and the root cause of the problem may be somewhere else. * * * * If you do send a fix, please include this trailer: * * Reported-by: "kernelci.org bot" <[email protected]> * * * * Hope this helps! ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
mainline/master bisection: baseline.dmesg.emerg on kontron-pitx-imx8m
Summary:
Start:9fc2f99030b5Merge tag 'nfsd-6.3' ofgit://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
Plain log:
https://storage.kernelci.org/mainline/master/v6.2-6669-g9fc2f99030b5/arm64/defconfig+crypto/gcc-10/lab-kontron/baseline-kontron-pitx-imx8m.txt
HTML log:
https://storage.kernelci.org/mainline/master/v6.2-6669-g9fc2f99030b5/arm64/defconfig+crypto/gcc-10/lab-kontron/baseline-kontron-pitx-imx8m.html
Result:199354d7fb6ecrypto: caam - RemoveGFP_DMAand add DMA
alignment paddingChecks:
revert: PASS
verify: PASSParameters:
Tree: mainline
URL:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gitBranch: master Target: kontron-pitx-imx8m CPU arch: arm64 Lab: lab-kontron Compiler: gcc-10 Config: defconfig+crypto Test case: baseline.dmesg.emergBreaking commit found:
-------------------------------------------------------------------------------
commit199354d7fb6eaa2cc5bb650af0bca624baffee35Author: Herbert Xu <[email protected]> Date: Fri Dec 30 13:21:38 2022 +0800crypto: caam - Remove
GFP_DMAand add DMA alignment padding
GFP_DMAdoes not guarantee that the returned memory is aligned for DMA. It should be removed where it is superfluous.However, kmalloc may start returning DMA-unaligned memory in
future
so fix this by adding the alignment by hand.Signed-off-by Herbert Xu <[email protected]>drivers/crypto/caam/blob_gen.c +1
-1@@ -83,7 +83,7 @@ int caam_process_blob(struct caam_blob_priv *priv, output_len = info->input_len -CAAM_BLOB_OVERHEAD ; } - desc =kzalloc (CAAM_BLOB_DESC_BYTES_MAX ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_BLOB_DESC_BYTES_MAX ,GFP_KERNEL );if (!desc)return -ENOMEM ;drivers/crypto/caam/caamalg.c +3
-2@@ -59,6 +59,8 @@#include <crypto/engine.h> #include <crypto/xts.h> #include <asm/unaligned.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> /* * crypto alg @@ -1379,8 +1381,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req, sec4_sg_bytes = sec4_sg_len * sizeof(struct sec4_sg_entry);/* allocate space for base edesc and hw desc commands, link tables */ - edesc =kzalloc (sizeof (*edesc) + desc_bytes + sec4_sg_bytes, -GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + desc_bytes + sec4_sg_bytes, flags);if (!edesc) {drivers/crypto/caam/caamalg.c +1
-0caam_unmap (jrdev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,0 ,0 );@@ -1608,6 +1609,7 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, u8 *iv;int ivsize =crypto_skcipher_ivsize (skcipher);int dst_sg_idx, sec4_sg_ents, sec4_sg_bytes; +unsigned int aligned_size; src_nents =sg_nents_for_len (req->src, req->cryptlen);drivers/crypto/caam/caamalg.c +0
-0if (unlikely (src_nents <0 )) {@@ -1681,15 +1683,18 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req,/* * allocate space for base edesc and hw desc commands, link tables, IV
drivers/crypto/caam/caamalg.c +0
-1*/ - edesc = kzalloc(sizeof(*edesc) + desc_bytes + sec4_sg_bytes +ivsize,
drivers/crypto/caam/caamalg.c +6
-3- GFP_DMA | flags); -if (!edesc) { + aligned_size = ALIGN(ivsize, __alignof__(*edesc)); + aligned_size +=sizeof (*edesc) + desc_bytes + sec4_sg_bytes; + aligned_size =ALIGN (aligned_size,dma_get_cache_alignment ()); + iv =kzalloc (aligned_size, flags); +if (!iv) {dev_err (jrdev,"could not allocate extended descriptor\n" );caam_unmap (jrdev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,0 ,0 );return ERR_PTR (-ENOMEM ); } + edesc = (void *)(iv + ALIGN(ivsize, __alignof__(*edesc))); edesc->src_nents = src_nents; edesc->dst_nents = dst_nents; edesc->mapped_src_nents = mapped_src_nents;@@ -1701,7 +1706,6 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, /* Make sure IV is located in a DMAable area */ if (ivsize) { - iv = (u8 *)edesc->sec4_sg + sec4_sg_bytes; memcpy(iv, req->iv, ivsize);drivers/crypto/caam/caamalg.c +0
-0iv_dma =dma_map_single (jrdev, iv, ivsize,DMA_BIDIRECTIONAL );drivers/crypto/caam/caamalg_qi.c +3
-1@@ -20,6 +20,8 @@#include "caamalg_desc.h" #include <crypto/xts.h> #include <asm/unaligned.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> /* * crypto alg @@ -959,7 +961,7 @@ static struct aead_edesc *aead_edesc_alloc(structaead_request *req, return (struct aead_edesc *)drv_ctx;/* allocate space for base edesc and hw desc commands, link tables */ - edesc =qi_cache_alloc (GFP_DMA | flags); + edesc =qi_cache_alloc (flags);if (unlikely (!edesc)) {drivers/crypto/caam/caamalg_qi.c +3
-2dev_err (qidev,"could not allocate extended descriptor\n" );return ERR_PTR (-ENOMEM );@@ -1317,8 +1319,9 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, qm_sg_ents = 1 + pad_sg_nents(qm_sg_ents); qm_sg_bytes = qm_sg_ents *sizeof (struct qm_sg_entry ); -if (unlikely (offsetof(struct skcipher_edesc , sgt) + qm_sg_bytes + - ivsize >CAAM_QI_MEMCACHE_SIZE )) { + if (unlikely(ALIGN(ivsize, __alignof__(*edesc)) + + offsetof(struct skcipher_edesc , sgt) + qm_sg_bytes > +CAAM_QI_MEMCACHE_SIZE )) {dev_err (qidev,"No space for %d S/G entries and/or %dB IV\n" , qm_sg_ents, ivsize);drivers/crypto/caam/caamalg_qi.c +4
-3caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents, 0,@@ -1327,17 +1330,18 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req, }/* allocate space for base edesc, link tables and IV */ - edesc = qi_cache_alloc(GFP_DMA | flags); -if (unlikely (!edesc)) { + iv = qi_cache_alloc(flags); +if (unlikely (!iv)) {dev_err (qidev,"could not allocate extended descriptor\n" );caam_unmap (qidev, req->src, req->dst, src_nents, dst_nents,0 ,0 ,DMA_NONE ,0 ,0 );return ERR_PTR (-ENOMEM ); } + edesc = (void *)(iv + ALIGN(ivsize, __alignof__(*edesc))); +/* Make sure IV is located in a DMAable area */ sg_table = &edesc->sgt[0 ]; - iv = (u8 *)(sg_table + qm_sg_ents);memcpy (iv, req->iv, ivsize);drivers/crypto/caam/caamalg_qi.c +0
-0iv_dma =dma_map_single (qidev, iv, ivsize,DMA_BIDIRECTIONAL );drivers/crypto/caam/caamalg_qi2.c +3
-1@@ -16,7 +16,9 @@#include "caamalg_desc.h" #include "caamhash_desc.h" #include "dpseci-debugfs.h" +#include <linux/dma-mapping.h> #include <linux/fsl/mc.h> +#include <linux/kernel.h> #include <soc/fsl/dpaa2-io.h> #include <soc/fsl/dpaa2-fd.h> #include <crypto/xts.h> @@ -370,7 +372,7 @@ static struct aead_edesc *aead_edesc_alloc(structaead_request *req, struct dpaa2_sg_entry *sg_table;/* allocate space for base edesc, link tables and IV */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (unlikely (!edesc)) {dev_err (dev,"could not allocate extended descriptor\n" );drivers/crypto/caam/caamalg_qi2.c +1
-1return ERR_PTR (-ENOMEM );@@ -1189,7 +1191,7 @@ static struct skcipher_edesc *skcipher_edesc_alloc(struct skcipher_request *req) }/* allocate space for base edesc, link tables and IV */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (unlikely (!edesc)) {dev_err (dev,"could not allocate extended descriptor\n" );drivers/crypto/caam/caamalg_qi2.c +9
-3caam_unmap(dev, req->src, req->dst, src_nents, dst_nents, 0,@@ -3220,14 +3222,14 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key, int ret = -ENOMEM;struct dpaa2_fl_entry *in_fle, *out_fle; - req_ctx =kzalloc (sizeof (*req_ctx),GFP_KERNEL |GFP_DMA ); + req_ctx =kzalloc (sizeof (*req_ctx),GFP_KERNEL );if (!req_ctx)return -ENOMEM ; in_fle = &req_ctx->fd_flt[1 ]; out_fle = &req_ctx->fd_flt[0 ]; - flc =kzalloc (sizeof (*flc),GFP_KERNEL |GFP_DMA ); + flc =kzalloc (sizeof (*flc),GFP_KERNEL );if (!flc) goto err_flc;@@ -3316,7 +3318,13 @@ static int ahash_setkey(struct crypto_ahash *ahash, const u8 *key,dev_dbg (ctx->dev,"keylen %d blocksize %d\n" , keylen, blocksize);if (keylen > blocksize) { - hashed_key =kmemdup (key, keylen,GFP_KERNEL |GFP_DMA ); +unsigned int aligned_len = +ALIGN (keylen,dma_get_cache_alignment ()); + +if (aligned_len < keylen) +return -EOVERFLOW ; + + hashed_key =kmemdup (key, aligned_len,GFP_KERNEL );if (!hashed_key)return -ENOMEM ;drivers/crypto/caam/caamalg_qi2.c +1
-1ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);@@ -3560,7 +3568,7 @@ static int ahash_update_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) { dma_unmap_sg(ctx->dev, req->src, src_nents,drivers/crypto/caam/caamalg_qi2.c +2
-2DMA_TO_DEVICE);@@ -3654,7 +3662,7 @@ static int ahash_final_ctx(struct ahash_request *req)int ret;/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc)return -ENOMEM ;@@ -3743,7 +3751,7 @@ static int ahash_finup_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );drivers/crypto/caam/caamalg_qi2.c +1
-1return -ENOMEM ;@@ -3836,7 +3844,7 @@ static int ahash_digest(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );drivers/crypto/caam/caamalg_qi2.c +2
-2return ret;@@ -3913,7 +3921,7 @@ static int ahash_final_no_ctx(struct ahash_request *req)int ret = -ENOMEM ;/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc)return ret;@@ -4012,7 +4020,7 @@ static int ahash_update_no_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) { dma_unmap_sg(ctx->dev, req->src, src_nents,drivers/crypto/caam/caamalg_qi2.c +1
-1DMA_TO_DEVICE);@@ -4125,7 +4133,7 @@ static int ahash_finup_no_ctx(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) {dma_unmap_sg (ctx->dev, req->src, src_nents,DMA_TO_DEVICE );drivers/crypto/caam/caamalg_qi2.c +1
-1return ret;@@ -4230,7 +4238,7 @@ static int ahash_update_first(struct ahash_request *req) }/* allocate space for base edesc and link tables */ - edesc =qi_cache_zalloc (GFP_DMA | flags); + edesc =qi_cache_zalloc (flags);if (!edesc) { dma_unmap_sg(ctx->dev, req->src, src_nents,drivers/crypto/caam/caamalg_qi2.c +1
-0DMA_TO_DEVICE);@@ -4926,6 +4934,7 @@ static int dpaa2_dpseci_congestion_setup(struct dpaa2_caam_priv *priv, {struct dpseci_congestion_notification_cfg cong_notif_cfg = {0 };struct device *dev = priv->dev; +unsigned int alignmask;int err;drivers/crypto/caam/caamalg_qi2.c +5
-4/* @@ -4936,13 +4945,14 @@ static int dpaa2_dpseci_congestion_setup(struct dpaa2_caam_priv *priv, !(priv->dpseci_attr.options & DPSECI_OPT_HAS_CG))return 0 ; - priv->cscn_mem =kzalloc (DPAA2_CSCN_SIZE +DPAA2_CSCN_ALIGN , -GFP_KERNEL |GFP_DMA ); + alignmask =DPAA2_CSCN_ALIGN -1 ; + alignmask |=dma_get_cache_alignment () -1 ; + priv->cscn_mem =kzalloc (ALIGN (DPAA2_CSCN_SIZE , alignmask +1 ), +GFP_KERNEL );if (!priv->cscn_mem)return -ENOMEM ; - priv->cscn_mem_aligned =PTR_ALIGN (priv->cscn_mem, DPAA2_CSCN_ALIGN); - priv->cscn_dma =dma_map_single (dev, priv->cscn_mem_aligned, + priv->cscn_dma =dma_map_single (dev, priv->cscn_mem,DPAA2_CSCN_SIZE ,DMA_FROM_DEVICE );drivers/crypto/caam/caamalg_qi2.c +1
-1if (dma_mapping_error (dev, priv->cscn_dma)) {dev_err (dev,"Error mapping CSCN memory area\n" );@@ -5174,7 +5184,7 @@ static int dpaa2_caam_probe(struct fsl_mc_device *dpseci_dev) priv->domain =iommu_get_domain_for_dev (dev); qi_cache =kmem_cache_create ("dpaa2_caamqicache" ,CAAM_QI_MEMCACHE_SIZE , -0 ,SLAB_CACHE_DMA ,NULL ); +0 ,0 ,NULL );if (!qi_cache) {drivers/crypto/caam/caamalg_qi2.c +1
-1dev_err (dev,"Can't allocate SEC cache\n" );return -ENOMEM ;@@ -5451,7 +5461,7 @@ int dpaa2_caam_enqueue(struct device *dev, struct caam_request *req) dma_sync_single_for_cpu(priv->dev, priv->cscn_dma,DPAA2_CSCN_SIZE ,DMA_FROM_DEVICE ); -if (unlikely (dpaa2_cscn_state_congested (priv->cscn_mem_aligned))) { +if (unlikely (dpaa2_cscn_state_congested (priv->cscn_mem))) {dev_dbg_ratelimited (dev,"Dropping request\n" );return -EBUSY ;drivers/crypto/caam/caamalg_qi2.c +0
-0}drivers/crypto/caam/caamalg_qi2.h +3
-5@@ -7,13 +7,14 @@#ifndef _CAAMALG_QI2_H_#define _CAAMALG_QI2_H_ +#include <crypto/internal/skcipher.h> +#include <linux/compiler_attributes.h> #include <soc/fsl/dpaa2-io.h> #include <soc/fsl/dpaa2-fd.h> #include <linux/threads.h> #include <linux/netdevice.h> #include "dpseci.h" #include "desc_constr.h" -#include <crypto/skcipher.h> #define DPAA2_CAAM_STORE_SIZE 16/* NAPI weight *must* be a multiple of the store size. */ @@ -36,8 +37,6 @@* @tx_queue_attr: array of Tx queue attributes * @cscn_mem: pointer to memory region containing the congestion SCN * it's size is larger than to accommodate alignment -* @cscn_mem_aligned: pointer to congestion SCN; it is computed as -* PTR_ALIGN(cscn_mem, DPAA2_CSCN_ALIGN) * @cscn_dma: dma address used by the QMAN to write CSCN messages * @dev: device associated with the DPSECI object * @mc_io: pointer to MC portal's I/O object @@ -58,7 +57,6 @@ struct dpaa2_caam_priv {/* congestion */ void *cscn_mem; -void *cscn_mem_aligned;dma_addr_t cscn_dma;struct device *dev;@@ -158,7 +156,7 @@ struct ahash_edesc {struct caam_flc {u32 flc[16 ];u32 sh_desc[MAX_SDLEN ]; -}____cacheline_aligned ; +}__aligned(CRYPTO_DMA_ALIGN) ;enum optype {ENCRYPT =0 ,@@ -180,7 +178,7 @@ enum optype {* @edesc: extended descriptor; points to one of {skcipher,aead}_edesc
*/
structcaam_request{drivers/crypto/caam/caamalg_qi2.h +1
-1-struct dpaa2_fl_entry fd_flt[2 ]; +struct dpaa2_fl_entry fd_flt[2 ]__aligned(CRYPTO_DMA_ALIGN) ;dma_addr_t fd_flt_dma;struct caam_flc *flc;dma_addr_t flc_dma;drivers/crypto/caam/caamhash.c +3
-1@@ -66,6 +66,8 @@#include "key_gen.h" #include "caamhash_desc.h" #include <crypto/engine.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #define CAAM_CRA_PRIORITY 3000@@ -365,7 +367,7 @@ static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key, dma_addr_t key_dma;int ret; - desc =kmalloc (CAAM_CMD_SZ *8 +CAAM_PTR_SZ *2 ,GFP_KERNEL | GFP_DMA); + desc =kmalloc (CAAM_CMD_SZ *8 +CAAM_PTR_SZ *2 ,GFP_KERNEL );if (!desc) {drivers/crypto/caam/caamhash.c +7
-1dev_err (jrdev,"unable to allocate key input memory\n" );return -ENOMEM ;@@ -432,7 +434,13 @@ static int ahash_setkey(struct crypto_ahash *ahash,dev_dbg (jrdev,"keylen %d\n" , keylen);if (keylen > blocksize) { - hashed_key =kmemdup (key, keylen,GFP_KERNEL |GFP_DMA ); +unsigned int aligned_len = +ALIGN (keylen,dma_get_cache_alignment ()); + +if (aligned_len < keylen) +return -EOVERFLOW ; + + hashed_key =kmemdup (key, keylen,GFP_KERNEL );if (!hashed_key)return -ENOMEM ;drivers/crypto/caam/caamhash.c +1
-1ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);@@ -702,7 +710,7 @@ static struct ahash_edesc *ahash_edesc_alloc(struct ahash_request *req, struct ahash_edesc *edesc;unsigned int sg_size = sg_num *sizeof (struct sec4_sg_entry ); - edesc =kzalloc (sizeof (*edesc) + sg_size,GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + sg_size, flags);if (!edesc) {dev_err (ctx->jrdev,"could not allocate extended descriptor\n" );drivers/crypto/caam/caamhash.c +0
-0return NULL ;drivers/crypto/caam/caampkc.c +3
-2@@ -16,6 +16,8 @@#include "desc_constr.h" #include "sg_sw_sec4.h" #include "caampkc.h" +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #define DESC_RSA_PUB_LEN (2 * CAAM_CMD_SZ + SIZEOF_RSA_PUB_PDB)#define DESC_RSA_PRIV_F1_LEN (2 * CAAM_CMD_SZ + \@@ -310,8 +312,7 @@ static struct rsa_edesc *rsa_edesc_alloc(structakcipher_request *req, sec4_sg_bytes = sec4_sg_len *sizeof (struct sec4_sg_entry );/* allocate space for base edesc, hw desc commands and link tables */ - edesc =kzalloc (sizeof (*edesc) + desclen + sec4_sg_bytes, -GFP_DMA | flags); + edesc =kzalloc (sizeof (*edesc) + desclen + sec4_sg_bytes, flags);if (!edesc)drivers/crypto/caam/caampkc.c +1
-1goto dst_fail;@@ -898,7 +899,7 @@ static u8 *caam_read_rsa_crt(const u8 *ptr, size_t nbytes, size_t dstlen)if (!nbytes)return NULL ; - dst =kzalloc (dstlen,GFP_DMA |GFP_KERNEL ); + dst =kzalloc (dstlen,GFP_KERNEL );if (!dst)return NULL ;@@ -910,7 +911,7 @@ static u8 *caam_read_rsa_crt(const u8 *ptr, size_t nbytes, size_t dstlen)/** * caam_read_raw_data - Read a raw byte stream as a positive integer. * The function skips buffer's leading zeros, copies the remained data
- * to a buffer allocated in theGFP_DMA|GFP_KERNELzone and returns
+ * to a buffer allocated in theGFP_KERNELzone and returns
* the address of the new buffer.
*
* @buf : The data to readdrivers/crypto/caam/caampkc.c +1
-1@@ -923,7 +924,7 @@ static inline u8 *caam_read_raw_data(const u8 *buf, size_t *nbytes)if (!*nbytes)return NULL ; -return kmemdup (buf, *nbytes,GFP_DMA |GFP_KERNEL ); +return kmemdup (buf, *nbytes,GFP_KERNEL ); }static int
caam_rsa_check_key_length(unsigned int len)drivers/crypto/caam/caampkc.c +1
-2@@ -949,13 +950,13 @@ static int caam_rsa_set_pub_key(struct crypto_akcipher *tfm, const void *key, return ret;/* Copy key in DMA zone */ - rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_KERNEL );if (!rsa_key->e) goto err;/* * Skip leading zeros and copy the positive integer to a buffer -* allocated in the GFP_DMA | GFP_KERNEL zone. The decryption descriptor
drivers/crypto/caam/caampkc.c +1
-0+* allocated in the GFP_KERNEL zone. The decryption descriptor * expects a positive integer for the RSA modulus and uses its length as
drivers/crypto/caam/caampkc.c +1
-0* decryption output length. */ @@ -983,6 +984,7 @@ static void caam_rsa_set_priv_key_form(structcaam_rsa_ctx *ctx, struct caam_rsa_key *rsa_key = &ctx->key;size_t p_sz = raw_key->p_sz;size_t q_sz = raw_key->q_sz; +unsigned aligned_size; rsa_key->p =caam_read_raw_data (raw_key->p, &p_sz);drivers/crypto/caam/caampkc.c +6
-5if (!rsa_key->p)@@ -994,11 +996,13 @@ static void caam_rsa_set_priv_key_form(structcaam_rsa_ctx *ctx, goto free_p; rsa_key->q_sz = q_sz; - rsa_key->tmp1 =kzalloc (raw_key->p_sz,GFP_DMA |GFP_KERNEL ); + aligned_size =ALIGN (raw_key->p_sz,dma_get_cache_alignment ()); + rsa_key->tmp1 =kzalloc (aligned_size,GFP_KERNEL );if (!rsa_key->tmp1) goto free_q; - rsa_key->tmp2 =kzalloc (raw_key->q_sz,GFP_DMA |GFP_KERNEL ); + aligned_size =ALIGN (raw_key->q_sz,dma_get_cache_alignment ()); + rsa_key->tmp2 =kzalloc (aligned_size,GFP_KERNEL );if (!rsa_key->tmp2) goto free_tmp1;@@ -1051,17 +1055,17 @@ static int caam_rsa_set_priv_key(struct crypto_akcipher *tfm, const void *key, return ret;/* Copy key in DMA zone */ - rsa_key->d =kmemdup (raw_key.d, raw_key.d_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->d =kmemdup (raw_key.d, raw_key.d_sz,GFP_KERNEL );if (!rsa_key->d) goto err; - rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_DMA |GFP_KERNEL ); + rsa_key->e =kmemdup (raw_key.e, raw_key.e_sz,GFP_KERNEL );if (!rsa_key->e) goto err;/* * Skip leading zeros and copy the positive integer to a buffer -* allocated in the GFP_DMA | GFP_KERNEL zone. The decryption descriptor
drivers/crypto/caam/caampkc.c +1
-0+* allocated in the GFP_KERNEL zone. The decryption descriptor * expects a positive integer for the RSA modulus and uses its length as
drivers/crypto/caam/caampkc.c +1
-2* decryption output length. */ @@ -1185,8 +1189,7 @@ int caam_pkc_init(struct device *ctrldev)return 0 ;/* allocate zero buffer, used for padding input */ - zero_buffer =kzalloc (CAAM_RSA_MAX_INPUT_SIZE -1 ,GFP_DMA | -GFP_KERNEL ); + zero_buffer =kzalloc (CAAM_RSA_MAX_INPUT_SIZE -1 ,GFP_KERNEL );if (!zero_buffer)return -ENOMEM ;drivers/crypto/caam/caamprng.c +3
-0@@ -8,6 +8,8 @@#include <linux/completion.h> #include <crypto/internal/rng.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #include "compat.h" #include "regs.h" #include "intern.h" @@ -75,6 +77,7 @@ static int caam_prng_generate(struct crypto_rng *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int dlen) { +unsigned int aligned_dlen =ALIGN (dlen,dma_get_cache_alignment ());struct caam_prng_ctx ctx;struct device *jrdev;drivers/crypto/caam/caamprng.c +5
-2dma_addr_t dst_dma;@@ -82,7 +85,10 @@ static int caam_prng_generate(struct crypto_rng *tfm, u8 *buf;int ret; - buf =kzalloc (dlen,GFP_KERNEL ); +if (aligned_dlen < dlen) +return -EOVERFLOW ; + + buf =kzalloc (aligned_dlen,GFP_KERNEL );if (!buf)return -ENOMEM ;@@ -94,7 +100,7 @@ static int caam_prng_generate(struct crypto_rng *tfm, return ret; } - desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL );if (!desc) { ret = -ENOMEM ;drivers/crypto/caam/caamprng.c +1
-1goto out1;@@ -156,7 +162,7 @@ static int caam_prng_seed(struct crypto_rng *tfm,return ret; } - desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL |GFP_DMA ); + desc =kzalloc (CAAM_PRNG_MAX_DESC_LEN ,GFP_KERNEL );if (!desc) {caam_jr_free (jrdev);return -ENOMEM ;drivers/crypto/caam/caamrng.c +7
-4@@ -12,6 +12,8 @@#include <linux/hw_random.h> #include <linux/completion.h> #include <linux/atomic.h> +#include <linux/dma-mapping.h> +#include <linux/kernel.h> #include <linux/kfifo.h> #include "compat.h" @@ -176,17 +178,18 @@ static int caam_init(struct hwrng *rng)int err; ctx->desc_sync =devm_kzalloc (ctx->ctrldev,CAAM_RNG_DESC_LEN , -GFP_DMA |GFP_KERNEL ); +GFP_KERNEL );if (!ctx->desc_sync)return -ENOMEM ; ctx->desc_async =devm_kzalloc (ctx->ctrldev,CAAM_RNG_DESC_LEN , -GFP_DMA |GFP_KERNEL ); +GFP_KERNEL );if (!ctx->desc_async)return -ENOMEM ; -if (kfifo_alloc (&ctx->fifo,CAAM_RNG_MAX_FIFO_STORE_SIZE , -GFP_DMA |GFP_KERNEL )) +if (kfifo_alloc (&ctx->fifo,ALIGN (CAAM_RNG_MAX_FIFO_STORE_SIZE , +dma_get_cache_alignment ()), +GFP_KERNEL ))return -ENOMEM ;INIT_WORK (&ctx->worker, caam_rng_worker);drivers/crypto/caam/ctrl.c +2
-2@@ -199,7 +199,7 @@ static int deinstantiate_rng(struct device *ctrldev, int state_handle_mask) u32 *desc, status;int sh_idx, ret =0 ; - desc =kmalloc (CAAM_CMD_SZ *3 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *3 ,GFP_KERNEL );if (!desc)return -ENOMEM ;@@ -276,7 +276,7 @@ static int instantiate_rng(struct device *ctrldev,int state_handle_mask, int ret = 0, sh_idx; ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl; - desc =kmalloc (CAAM_CMD_SZ *7 ,GFP_KERNEL |GFP_DMA ); + desc =kmalloc (CAAM_CMD_SZ *7 ,GFP_KERNEL );if (!desc)return -ENOMEM ;drivers/crypto/caam/key_gen.c +1
-1@@ -64,7 +64,7 @@ int gen_split_key(struct device *jrdev, u8 *key_out,if (local_max > max_keylen)return -EINVAL ; - desc =kmalloc (CAAM_CMD_SZ *6 +CAAM_PTR_SZ *2 ,GFP_KERNEL | GFP_DMA); + desc =kmalloc (CAAM_CMD_SZ *6 +CAAM_PTR_SZ *2 ,GFP_KERNEL );if (!desc) {dev_err (jrdev,"unable to allocate key input memory\n" );drivers/crypto/caam/key_gen.c +0
-0return ret;drivers/crypto/caam/qi.c +2
-2@@ -614,7 +614,7 @@ static int alloc_rsp_fq_cpu(struct device *qidev, unsigned int cpu)struct qman_fq *fq;int ret; - fq =kzalloc (sizeof (*fq),GFP_KERNEL |GFP_DMA ); + fq =kzalloc (sizeof (*fq),GFP_KERNEL );if (!fq)return -ENOMEM ;@@ -756,7 +756,7 @@ int caam_qi_init(struct platform_device *caam_pdev) } qi_cache =kmem_cache_create ("caamqicache" ,CAAM_QI_MEMCACHE_SIZE ,0 , -SLAB_CACHE_DMA ,NULL ); +0 ,NULL );if (!qi_cache) {drivers/crypto/caam/qi.c +0
-0dev_err (qidev,"Can't allocate CAAM cache\n" );free_rsp_fqs ();drivers/crypto/caam/qi.h +7
-3@@ -9,6 +9,8 @@#ifndef __QI_H__#define __QI_H__ +#include <crypto/algapi.h> +#include <linux/compiler_attributes.h> #include <soc/fsl/qman.h> #include "compat.h" #include "desc.h" @@ -58,8 +60,10 @@ enum optype {* @qidev: device pointer for CAAM/QI backend */ struct caam_drv_ctx { -u32 prehdr[2 ]; -u32 sh_desc[MAX_SDLEN ]; +struct { +u32 prehdr[2 ]; +u32 sh_desc[MAX_SDLEN ]; + }__aligned(CRYPTO_DMA_ALIGN) ;dma_addr_t context_a;struct qman_fq *req_fq;struct qman_fq *rsp_fq;@@ -67,7 +71,7 @@ struct caam_drv_ctx {int cpu;enum optype op_type;struct device *qidev; -}____cacheline_aligned ; +};/** * caam_drv_req - The request structure the driver application should fill while
drivers/crypto/caam/qi.h +1
-2@@ -88,7 +92,7 @@ struct caam_drv_req {struct caam_drv_ctx *drv_ctx;caam_qi_cbk cbk;void *app_ctx; -}____cacheline_aligned ; +}__aligned(CRYPTO_DMA_ALIGN) ;/** * caam_drv_ctx_init - Initialise a CAAM/QI driver context ------------------------------------------------------------------------------- Git bisection log:
-------------------------------------------------------------------------------
git bisect start
# good: [1f2d9ffc7a5f916935749ffc6e93fb33bfe94d2f] Merge tag 'sched-core-2023-02-20' ofgit://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good1f2d9ffc7a5f916935749ffc6e93fb33bfe94d2f
# bad: [9fc2f99030b55027d84723b0dcbbe9f7e21b9c6c] Merge tag 'nfsd-6.3' ofgit://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
git bisect bad9fc2f99030b55027d84723b0dcbbe9f7e21b9c6c
# good: [d1fabc68f8e0541d41657096dc713cb01775652d] Mergegit://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
git bisect goodd1fabc68f8e0541d41657096dc713cb01775652d
# bad: [f3dd0c53370e70c0f9b7e931bbec12916f3bb8cc] bpf: add missing header file include
git bisect badf3dd0c53370e70c0f9b7e931bbec12916f3bb8cc
# skip: [877934769e5b91798d304d4641647900ee614ce8] Merge tag 'x86_cpu_for_v6.3_rc1' ofgit://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect skip877934769e5b91798d304d4641647900ee614ce8
# good: [a5c926acd03aacbf558605f3352939dda86c8808] Merge back Intel thermal control changes for 6.3.
git bisect gooda5c926acd03aacbf558605f3352939dda86c8808
# bad: [555c5661317e9c3090b9d181106d8bc31dd8e29a] crypto: sahara - Userequest_completehelpers
git bisect bad555c5661317e9c3090b9d181106d8bc31dd8e29a
# bad: [d52b0c780c1f8cdd0cef9c6e683ab568d04bb19d] Revert "crypto: rsa-pkcs1pad - ReplaceGFP_ATOMICwithGFP_KERNELinpkcs1pad_encrypt_sign_complete" git bisect badd52b0c780c1f8cdd0cef9c6e683ab568d04bb19d
# bad: [2f1cf4e50c956f882c9fc209c7cded832b67b8a3] crypto: aspeed - Add ACRY RSA driver
git bisect bad2f1cf4e50c956f882c9fc209c7cded832b67b8a3
# good: [1ce94a8c2c3721be1d9bc85fd38fc8c520aa37d6] crypto: testmgr - disallow plain cbcmac(aes) in FIPS mode
git bisect good1ce94a8c2c3721be1d9bc85fd38fc8c520aa37d6
# bad: [37d8d3ae7a58cb16fa3f4f1992d2ee36bc621438] crypto: x86/aria - implement aria-avx2
git bisect bad37d8d3ae7a58cb16fa3f4f1992d2ee36bc621438
# bad: [8e613cec25196b51601dfac50c5bf229acd72bc6] crypto: talitos - RemoveGFP_DMAand add DMA alignment padding
git bisect bad8e613cec25196b51601dfac50c5bf229acd72bc6
# good: [c27b2d2012e1826674255b9e45b61c172a267e1c] crypto: testmgr - allow ecdsa-nist-p256 and -p384 in FIPS mode
git bisect goodc27b2d2012e1826674255b9e45b61c172a267e1c
# bad: [199354d7fb6eaa2cc5bb650af0bca624baffee35] crypto: caam - RemoveGFP_DMAand add DMA alignment padding
git bisect bad199354d7fb6eaa2cc5bb650af0bca624baffee35# first bad commit: [199354d7fb6eaa2cc5bb650af0bca624baffee35] crypto: caam - Remove GFP_DMA and add DMA alignment padding --------------------------------------------------------------------------------=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group. View/Reply Online (#38627): https://groups.io/g/kernelci-results/message/38627
Mute This Topic: https://groups.io/mt/97192113/1131744
Group Owner: [email protected]
Unsubscribe: https://groups.io/g/kernelci-results/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-
Herbert Xu
maintainerQuoted 6 lines · Mark Brown
The algorithms selftests are failing:
alg: self-tests for cbc(aes) using cbc-aes-caam failed (rc=-22)
alg: self-tests forcbc(des3_ede)using cbc-3des-caam failed (rc=-22)
alg: self-tests for cbc(des) using failed (rc=-22)
Thanks for the report. I'm aware of the problem and a v2 patch will be available soon on the thread at
Unfortunately due to vger issues the patch is still in the mail queue.
Cheers,
Signature · 8 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel