Re: [PATCH v7 0/3] hw_random: introduce Arm CryptoCell TRNG driver

From: Geert Uytterhoeven
Date: Tue Apr 21 2020 - 09:40:06 EST


Hi Hadar (and Gilad),

On Tue, Apr 21, 2020 at 3:13 PM Hadar Gat <Hadar.Gat@xxxxxxx> wrote:
> To better explain the relationship between ccree and cctrng drivers, here an description of the underlying hardware and the relationship to the two drivers:
>
> Arm TrustZone CryptoCell is a hardware block that implements two separate and discreet, although related, interfaces: one for the Rich Execution Environment (read: Linux) and the other for the Trusted Execution Environment (e.g. Trusty, Op-TEE).
>
> The ccree driver exposes the REE interface of CryptoCell to Linux. Where a SoC vendor implements both REE and TEE in their design, that is all that is needed.
>
> However, we have some customers that make use CryptoCell but never implement a Trusted Execution Environment. This is a design decision taken when the SoC hardware is being designed and not a software controlled configuration, as it involves how the buses are laid out. Some of these customers have requested from us to allow making use in Linux of the TRNG resources which are normally associated with the TEE side when it is not in use. For these customers, the cctrng driver allows making use in Linux the TRNG which is normally part of the TEE side of CryptoCell.

Thank you, that is the part I was missing.

BTW, there seems to be no mention of CryptoCell 630 on arm.com; it
covers only CC-300 and CC-700.
But from the (very limited) information about the crypto engine on R-Car
Gen3 SoCs, it looks like the RNG is indeed only present in the secure
(trusted) part.

> > -----Original Message-----
> > From: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> > On Mon, Apr 20, 2020 at 2:27 PM Hadar Gat <Hadar.Gat@xxxxxxx> wrote:
> > > > From: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> > > > Sent: Monday, 20 April 2020 12:35
> > > >
> > > > On Fri, Mar 27, 2020 at 7:11 AM Hadar Gat <hadar.gat@xxxxxxx> wrote:
> > > > > The Arm CryptoCell is a hardware security engine.
> > > > > This patch introduces driver for its TRNG (True Random Number
> > > > > Generator) engine.
> > > >
> > > > Thanks for your series!
> > > >
> > > > I am wondering what is the relation between this and
> > > > Documentation/devicetree/bindings/crypto/arm-cryptocell.txt?
> > >
> > > Arm TrustZone CryptoCell hardware contains both cryptographic engine
> > (ccree) and true random number generator engine (cctrng).
> >
> > OK.
> >
> > > These are separate engines with some sharing in logic and interface.
> >
> > Do they share the same register block?
> >
> > > cctrng engine may not always be present.
> >
> > I assume that applies to e.g. the older 630p?
> >
> > > The devicetree documentation is in:
> > > For ccree -
> > > Documentation/devicetree/bindings/crypto/arm-cryptocell.txt
> > > For cctrng - Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> >
> > Thank you, I had already read both documents.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds