[PATCH v3 6/8] cmd: rng: Add support for selecting RNG device

Simon Glass sjg at chromium.org
Sat Mar 12 18:59:04 CET 2022


Hi Sughosh,

On Thu, 10 Mar 2022 at 05:43, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
>
> hi Simon,
>
> On Wed, 9 Mar 2022 at 21:02, Simon Glass <sjg at chromium.org> wrote:
> >
> > Hi Sugosh,
> >
> > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu at linaro.org> wrote:
> > >
> > > The 'rng' u-boot command is used for printing a select number of
> > > random bytes on the console. Currently, the RNG device from which the
> > > random bytes are read is fixed. However, a platform can have multiple
> > > RNG devices, one example being qemu, which has a virtio RNG device and
> > > the RNG pseudo device through the TPM chip.
> > >
> > > Extend the 'rng' command so that the user can provide the RNG device
> > > number from which the random bytes are to be read. This will be the
> > > device index under the RNG uclass.
> > >
> > > Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> > > Tested-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > > ---
> > >
> > > Changes since V2: None
> > >
> > >  cmd/rng.c | 31 +++++++++++++++++++++++--------
> > >  1 file changed, 23 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/cmd/rng.c b/cmd/rng.c
> > > index 1ad5a096c0..bb89cfa784 100644
> > > --- a/cmd/rng.c
> > > +++ b/cmd/rng.c
> > > @@ -13,19 +13,34 @@
> > >
> > >  static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> > >  {
> > > -       size_t n = 0x40;
> > > +       size_t n;
> > >         struct udevice *dev;
> > >         void *buf;
> > > +       int devnum;
> > >         int ret = CMD_RET_SUCCESS;
> > >
> > > -       if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
> > > +       switch (argc) {
> > > +       case 1:
> > > +               devnum = 0;
> > > +               n = 0x40;
> > > +               break;
> > > +       case 2:
> > > +               devnum = hextoul(argv[1], NULL);
> > > +               n = 0x40;
> > > +               break;
> > > +       case 3:
> > > +               devnum = hextoul(argv[1], NULL);
> > > +               n = hextoul(argv[2], NULL);
> > > +               break;
> > > +       default:
> > > +               return CMD_RET_USAGE;
> > > +       }
> > > +
> > > +       if (uclass_get_device(UCLASS_RNG, devnum, &dev) || !dev) {
> >
> > Devices are numbered by aliases, so you should use
> > uclass_get_device_by_seq() here.
> >
> > >                 printf("No RNG device\n");
> > >                 return CMD_RET_FAILURE;
> > >         }
> > >
> > > -       if (argc >= 2)
> > > -               n = hextoul(argv[1], NULL);
> > > -
> > >         buf = malloc(n);
> >
> > No need to malloc(), just set a limit for (say 64) bytes. See how
> > cmd_mem.c does it.
>
> These changes were not made as part of this patch. This is already
> existing code. I will make the changes that you suggest nonetheless.
> Btw, can you please take a look at the v4 patchset for this series.
> Thanks.

Ah I see, then you could do it as another patch.

Regards,
Simon


More information about the U-Boot mailing list