[PATCH 1/1] rng: detect RISC-V Zkr RNG device in bind method

Simon Glass sjg at chromium.org
Mon Nov 6 18:24:57 CET 2023


Hi Heinrich,

On Sun, 5 Nov 2023 at 14:54, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> On 11/5/23 18:25, Simon Glass wrote:
> > Hi Heinrich,
> >
> > On Sun, 5 Nov 2023 at 03:47, Heinrich Schuchardt
> > <heinrich.schuchardt at canonical.com> wrote:
> >>
> >> On 11/4/23 21:42, Simon Glass wrote:
> >>> Hi Heinrich,
> >>>
> >>> On Sat, 4 Nov 2023 at 06:51, Heinrich Schuchardt
> >>> <heinrich.schuchardt at canonical.com> wrote:
> >>>>
> >>>> The existence of devices should be checked in the bind method and not in
> >>>> the probe method. Adjust the RISC-V Zkr RNG driver accordingly.
> >>>>
> >>>> Use ENOENT (and not ENODEV) to signal that the device is not available.
> >>>>
> >>>> Fixes: ceec977ba1a9 ("rng: Provide a RNG based on the RISC-V Zkr ISA extension")
> >>>> Reported-by: Andre Przywara <andre.przywara at arm.com>
> >>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> >>>> ---
> >>>>    drivers/rng/riscv_zkr_rng.c | 34 ++++++++++++++++++++++++++--------
> >>>>    1 file changed, 26 insertions(+), 8 deletions(-)
> >>>
> >>> This device should be in the DT, so you have some control over which
> >>> RNG is used.
> >>
> >> The device-tree provided by QEMU does not contain such a device as Zkr
> >> is an ISA extension and not a device. This device-tree is not under the
> >> control of the U-Boot project.
> >
> > Why do you bring up QEMU? I would expect that it follows the norma dt
> > bindings, so it should not be any different from real hardware?
>
> Yes Simon, QEMU follows the normal bindings. If you want to change
> these, please, contribute to the RISC-V working groups or to the Linux
> kernel project.

Rick, can you help with this? I am thinking of something like this as
a top-level node:

rng {
    compatible = "riscv,zkr";
};

>
> >
> > Anyway, you could add it. It is just a binding. I believe RISC-V has
> > all sorts of isa options which result in different machine features.
> >
> > What are you going to do when you want to choose between the ISA RNG
> > and a TPM one?
>
> First of all there are different configurations switches for both
> drivers. But of course you can enable both. They will be different
> U-Boot devices. The rng command has a parameter to choose a RNG device
> by device number. This is not different to having two USB drives.

Did you see the other discussion about this? Without a propert driver,
there is no way to choose which RNG device is used.

Also the comment is very clear:

/**
 * struct driver_info - Information required to instantiate a device
 *
 * NOTE: Avoid using this except in extreme circumstances, where device tree
 * is not feasible (e.g. serial driver in SPL where <8KB of SRAM is
 * available). U-Boot's driver model uses device tree for configuration.

Do we need a build-time warning so people don't forget this?

Regards,
Simon


More information about the U-Boot mailing list