Messages in this thread | | | Subject | Re: [PATCH v8 4/8] crypto: caam - simplify RNG implementation | From | Horia Geantă <> | Date | Tue, 17 Mar 2020 23:37:32 +0200 |
| |
On 3/16/2020 5:01 PM, Andrey Smirnov wrote: > Rework CAAM RNG implementation as follows: > > - Make use of the fact that HWRNG supports partial reads and will > handle such cases gracefully by removing recursion in caam_read() > > - Convert blocking caam_read() codepath to do a single blocking job > read directly into requested buffer, bypassing any intermediary > buffers > > - Convert async caam_read() codepath into a simple single > reader/single writer FIFO use-case, thus simplifying concurrency > handling and delegating buffer read/write position management to KFIFO > subsystem. > > - Leverage the same low level RNG data extraction code for both async > and blocking caam_read() scenarios, get rid of the shared job > descriptor and make non-shared one as a simple as possible (just > HEADER + ALGORITHM OPERATION + FIFO STORE) > > - Split private context from DMA related memory, so that the former > could be allocated without GFP_DMA. > > NOTE: On its face value this commit decreased throughput numbers > reported by > > dd if=/dev/hwrng of=/dev/null bs=1 count=100K [iflag=nonblock] > > by about 15%, however commits that enable prediction resistance and > limit JR total size impact the performance so much and move the > bottleneck such as to make this regression irrelevant. > > NOTE: On the bright side, this commit reduces RNG in kernel DMA buffer > memory usage from 2 x RN_BUF_SIZE (~256K) to 32K. > > Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> > Cc: Chris Healy <cphealy@gmail.com> > Cc: Lucas Stach <l.stach@pengutronix.de> > Cc: Horia Geantă <horia.geanta@nxp.com> > Cc: Herbert Xu <herbert@gondor.apana.org.au> > Cc: Iuliana Prodan <iuliana.prodan@nxp.com> > Cc: linux-crypto@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-imx@nxp.com Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Thanks, Horia
| |