Hi > -----Original Message----- > From: Michael Walle <mich...@walle.cc> > Sent: Tuesday, November 16, 2021 4:53 PM > To: Gaurav Jain <gaurav.j...@nxp.com> > Cc: Shengzhou Liu <shengzhou....@nxp.com>; Varun Sethi > <v.se...@nxp.com>; Adrian Alonso <adrian.alo...@nxp.com>; Alison Wang > <alison.w...@nxp.com>; Andy Tang <andy.t...@nxp.com>; > feste...@gmail.com; Franck Lenormand <franck.lenorm...@nxp.com>; > Horia Geanta <horia.gea...@nxp.com>; Ji Luo <ji....@nxp.com>; > Meenakshi Aggarwal <meenakshi.aggar...@nxp.com>; Mingkai Hu > <mingkai...@nxp.com>; olte...@gmail.com; Pankaj Gupta > <pankaj.gu...@nxp.com>; Peng Fan <peng....@nxp.com>; Pramod Kumar > <pramod.kuma...@nxp.com>; Priyanka Jain <priyanka.j...@nxp.com>; > Rajesh Bhagat <rajesh.bha...@nxp.com>; Sahil Malhotra > <sahil.malho...@nxp.com>; sba...@denx.de; Silvano Di Ninno > <silvano.dini...@nxp.com>; s...@chromium.org; u-boot@lists.denx.de; dl- > uboot-imx <uboot-...@nxp.com>; Wasim Khan <wasim.k...@nxp.com>; > Ye Li <ye...@nxp.com> > Subject: Re: [EXT] Re: [PATCH v5 02/16] crypto/fsl: Add CAAM support for > bkek, random number generation > > Caution: EXT Email > > Hi, > > Am 2021-11-16 12:09, schrieb Gaurav Jain: > >> > --- a/drivers/crypto/fsl/fsl_blob.c > >> > +++ b/drivers/crypto/fsl/fsl_blob.c > >> > @@ -1,6 +1,7 @@ > >> > // SPDX-License-Identifier: GPL-2.0+ > >> > /* > >> > * Copyright 2014 Freescale Semiconductor, Inc. > >> > + * Copyright 2021 NXP > >> > * > >> > */ > >> > > >> > @@ -152,6 +153,87 @@ int blob_encap(u8 *key_mod, u8 *src, u8 *dst, > >> u32 len) > >> > return ret; > >> > } > >> > > >> > +int derive_blob_kek(u8 *bkek_buf, u8 *key_mod, u32 key_sz) > >> > >> where is this function actually used? looks like dead code to me. > > > > I was thinking to add the command for this function later. > > But will remove this patch from this series and send this later with > > derive blob kek cmd implementation. > > ok, but you've missed the question below. > > >> > >> > +{ > >> > + int ret, size; > >> > + u32 *desc; > >> > + > >> > + if (!IS_ALIGNED((uintptr_t)bkek_buf, ARCH_DMA_MINALIGN) || > >> > + !IS_ALIGNED((uintptr_t)key_mod, ARCH_DMA_MINALIGN)) { > >> > + puts("Error: derive_bkek: Address arguments are not > aligned!\n"); > >> > + return -EINVAL; > >> > + } > >> > + > >> > + printf("\nBlob key encryption key(bkek)\n"); > >> > + desc = malloc_cache_aligned(sizeof(int) * MAX_CAAM_DESCSIZE); > >> > + if (!desc) { > >> > + printf("Not enough memory for descriptor allocation\n"); > >> > + return -ENOMEM; > >> > + } > >> > + > >> > + size = ALIGN(key_sz, ARCH_DMA_MINALIGN); > >> > + flush_dcache_range((unsigned long)key_mod, (unsigned > >> > + long)key_mod + size); > >> > + > >> > + /* construct blob key encryption key(bkek) derive descriptor */ > >> > + inline_cnstr_jobdesc_derive_bkek(desc, bkek_buf, key_mod, > >> > + key_sz); > >> > + > >> > + size = ALIGN(sizeof(int) * MAX_CAAM_DESCSIZE, > >> ARCH_DMA_MINALIGN); > >> > + flush_dcache_range((unsigned long)desc, (unsigned long)desc + > size); > >> > + size = ALIGN(BKEK_SIZE, ARCH_DMA_MINALIGN); > >> > + invalidate_dcache_range((unsigned long)bkek_buf, > >> > + (unsigned long)bkek_buf + size); > >> > + > >> > + /* run descriptor */ > >> > + ret = run_descriptor_jr(desc); > >> > + if (ret < 0) { > >> > + printf("Error: %s failed 0x%x\n", __func__, ret); > >> > + } else { > >> > + invalidate_dcache_range((unsigned long)bkek_buf, > >> > + (unsigned long)bkek_buf + size); > >> > + puts("derive bkek successful.\n"); > >> > + } > >> > + > >> > + free(desc); > >> > + return ret; > >> > +} > >> > + > >> > +int hwrng_generate(u8 *dst, u32 len) > >> > >> likewise. > >> But more important what is the difference to drivers/crypto/fsl/rng.c? > >> Why > >> do you need a new function here? > > This one. Why can't you reuse the code which is already there?
I might have missed to update this. dm_rng_read() can be used. Will remove hwrng_generate(). Regards Gaurav Jain > > -michael