u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Cc: U-Boot Mailing List <u-boot@lists.denx.de>,
	Michal Simek <michal.simek@amd.com>,
	Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH] fdt_support: add optional board_rng_seed() hook
Date: Wed, 24 Aug 2022 18:25:33 -0700	[thread overview]
Message-ID: <CAPnjgZ03bjCMiAKHPKNjPH0JJ_jWnOZ6WBpzAmpnbVRDNw0GNA@mail.gmail.com> (raw)
In-Reply-To: <174d43f5-c0ee-c0ce-7491-b1f944294d4a@prevas.dk>

Hi Rasmus,

On Tue, 23 Aug 2022 at 23:57, Rasmus Villemoes
<rasmus.villemoes@prevas.dk> wrote:
>
> On 23/08/2022 16.35, Simon Glass wrote:
> > Hi Rasmus,
> >
> > On Tue, 23 Aug 2022 at 07:06, Rasmus Villemoes
> > <rasmus.villemoes@prevas.dk> wrote:
> >>
> >> On 23/08/2022 15.38, Simon Glass wrote:
> >>
> >>>> +/**
> >>>> + * board_rng_seed() - Provide a seed to be passed via /chosen/rng-seed
> >>>> + *
> >>>> + * This function is called if CONFIG_BOARD_RNG_SEED is set, and must
> >>>> + * be provided by the board. It should return, via @buf, some suitable
> >>>> + * seed value to pass to the kernel.
> >>>> + *
> >>>> + * @param buf         A struct abuf for returning the seed and its size.
> >>>> + * @return            0 if ok, negative on error.
> >>>> + */
> >>>> +int board_rng_seed(struct abuf *buf);
> >>>
> >>> Instead of yet another hook, can we use EVT_FT_FIXUP? An even better
> >>> option might be to use EVT_FT_FIXUP and then call a UCLASS_BOARD
> >>> method to obtain the information.
> >>
> >> I didn't know there was anything called EVT_FT_FIXUP, and from grepping,
> >> it seems suffer the same problem as ft_board_setup() as I mention,
> >> namely running after the command line (aka /chosen/bootargs) has been
> >> set up.
> >
> > If that is the only problem, then you could add another event for
> > doing an earlier fixup.
>
> Then I'd much rather just add a board_fdt_chosen() hook called early in
> fdt_chosen(), rather than having to enable yet another overcomplicated
> generic framework. But this was very much specifically targeted at
> rng-seed, because that's a generic, defined binding in /chosen, and I
> wanted to support that explicitly rather than having each board
> implement the logic for populating that - even if, due to its nature,
> the board must supply the actual value to put there.

You can put the event spy in generic code if you like. I am trying to
think more generic ways to handle things, since we have so many
'hooks'.

>
> >> Also, I can't see how it can actually affect the blob being passed to
> >> the kernel, doesn't
> >>
> >>                 fixup.tree = oftree_default();
> >>                 ret = event_notify(EVT_FT_FIXUP, &fixup, sizeof(fixup));
> >>
> >> mean that fixup.tree points at U-Boot's control fdt rather than the blob
> >> that will be passed as the kernel's fdt? That seems wrong.
> >
> > Yes that is wrong for many platforms. We should probably just change
> > it, but there is a complication.
> >
> > My recent series made a start at supporting writing to a DT using the
> > ofnode interface. See vbe_simple_test_base() for some comments on the
> > current state. You could require OF_LIVE to be enabled for your new
> > feature.
> >
> > Ideally I'd like to see ofnode used for all devicetree access, but it
> > will need to be done in stages. In the meantime we should try to head
> > in that direction.
>
> Huh? You'd need to deserialize the blob we've loaded (from FIT or uImage
> or given directly to a bootm command),

yes

> then have _all_ the various fixup
> functions (setting mac addresses, populating /chosen, all the various
> arch and board fixups etc.) modify that deserialized tree,

Well they only need to use ofnode.

>  and then at
> the end of the day, you need to serialize the tree again to pass to
> linux. I don't see how that could happen incrementally, and I don't see
> what advantage this would bring anyway.

Yes that's right. It can actually happen incrementally.

Unless there is very little going on, it is faster to modify the live
tree and then flatten it before calling Linux.

>
> All that has nothing at all to do with how U-Boot code accesses U-Boot's
> control DT.

As I mentioned, ofnode can now access any tree, at least when OF_LIVE
is enabled. But as you point out, there is lots of work to do here.

Regards,
Simon

  reply	other threads:[~2022-08-25  1:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-22  7:34 [PATCH] fdt_support: add optional board_rng_seed() hook Rasmus Villemoes
2022-08-23 13:38 ` Simon Glass
2022-08-23 14:06   ` Rasmus Villemoes
2022-08-23 14:35     ` Simon Glass
2022-08-24  6:57       ` Rasmus Villemoes
2022-08-25  1:25         ` Simon Glass [this message]
2022-08-28  1:52           ` Simon Glass
2022-09-01 23:52             ` Simon Glass
2022-09-02  7:00               ` Rasmus Villemoes
2022-09-02 19:59                 ` Simon Glass
2022-09-05 13:03                   ` Rasmus Villemoes
2022-09-12 16:48                   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPnjgZ03bjCMiAKHPKNjPH0JJ_jWnOZ6WBpzAmpnbVRDNw0GNA@mail.gmail.com \
    --to=sjg@chromium.org \
    --cc=michal.simek@amd.com \
    --cc=rasmus.villemoes@prevas.dk \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).