Re: [PATCH] cmd: pxe_utils: Check fdtcontroladdr in label_boot

Ramon Fried
2021-11-09T06:27:07Z

On Mon, Nov 8, 2021 at 6:53 PM Peter Hoyes <Peter.Hoyes@arm.com> wrote:
>
> On 28/10/2021 19:55, Ramon Fried wrote:
> > On Sun, Oct 24, 2021 at 10:56 PM Simon Glass <sjg@chromium.org> wrote:
> >> Hi,
> >>
> >> On Fri, 15 Oct 2021 at 05:21, Andre Przywara <andre.przywara@arm.com> wrote:
> >>> On Thu, 14 Oct 2021 12:24:45 -0600
> >>> Simon Glass <sjg@chromium.org> wrote:
> >>>
> >>> Hi Simon,
> >>>
> >>>> On Thu, 14 Oct 2021 at 02:40, Peter Hoyes <peter.hoyes@arm.com> wrote:
> >>>>> From: Peter Hoyes <Peter.Hoyes@arm.com>
> >>>>>
> >>>>> If using OF_CONTROL, fdtcontroladdr is set to the fdt used to configure
> >>>>> U-Boot. When using PXE, if no fdt is defined in the menu file, and
> >>>>> there is no fdt at fdt_addr, add fall back on fdtcontroladdr too.
> >>>>>
> >>>>> We are developing board support for the Armv8r64 FVP using
> >>>>> config_distro_bootcmd. We are also using OF_BOARD and would like the
> >>>>> PXE boot option to default to the fdt provided by board_fdt_blob_setup.
> >>>>>
> >>>>> Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
> >>>>> ---
> >>>>> cmd/pxe_utils.c | 8 +++++++-
> >>>>> 1 file changed, 7 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c
> >>>>> index 067c24e5ff..8f8e69ca97 100644
> >>>>> --- a/cmd/pxe_utils.c
> >>>>> +++ b/cmd/pxe_utils.c
> >>>>> @@ -556,7 +556,10 @@ static int label_boot(struct cmd_tbl *cmdtp, struct pxe_label *label)
> >>>>> * Scenario 2: If there is an fdt_addr specified, pass it along to
> >>>>> * bootm, and adjust argc appropriately.
> >>>>> *
> >>>>> - * Scenario 3: fdt blob is not available.
> >>>>> + * Scenario 3: If there is an fdtcontroladdr specified, pass it along to
> >>>>> + * bootm, and adjust argc appropriately.
> >>>>> + *
> >>>>> + * Scenario 4: fdt blob is not available.
> >>>>> */
> >>>>> bootm_argv[3] = env_get("fdt_addr_r");
> >>>>>
> >>>>> @@ -646,6 +649,9 @@ static int label_boot(struct cmd_tbl *cmdtp, struct pxe_label *label)
> >>>>> if (!bootm_argv[3])
> >>>>> bootm_argv[3] = env_get("fdt_addr");
> >>>>>
> >>>>> + if (!bootm_argv[3])
> >>>>> + bootm_argv[3] = env_get("fdtcontroladdr");
> >>>>> +
> >>>>> if (bootm_argv[3]) {
> >>>>> if (!bootm_argv[2])
> >>>>> bootm_argv[2] = "-";
> >>>>> --
> >>>>> 2.25.1
> >>>>>
> >>>> This is a bit strange as fdtcontroladdr is the control dtb that U-Boot
> >>>> uses.
> >>> Yes, that is the idea. This DTB should be as good as any, and this is the
> >>> last check before giving up on DTs completely, so "U-Boot's DTB" (actually
> >>> there is no such thing) is better than none at all. In fact EFI boot does
> >>> the very same thing:
> >>> https://source.denx.de/u-boot/u-boot/-/blob/master/include/config_distro_bootcmd.h#L144-L148
> >>>
> >>>> Can you not set fdt_addr to that, if you need to? Is it not
> >>>> already set to that?
> >>> According to doc/README.distro, fdt_addr is reserved for DTBs residing at
> >>> a (fixed?) ROM address. We don't really know yet where the DT comes from,
> >>> the cleanest seems to be to be passed down from TF-A, in which case this
> >>> would definitely not be ROM. board_fdt_blob_setup() knows this address,
> >>> and this is what will be written to $fdtcontroladdr.
> >>>
> >>> FWIW, this patch looks good to me.
> >> OK.
> >>
> >> But note that OF_BOARD is going to become an option, not something
> >> that let's us leave out the DT. Board vendors must provide a DT in
> >> U-Boot. So long as that is understood:
> >>
> >> Reviewed-by: Simon Glass <sjg@chromium.org>
> >>
> >> Regards,
> >> Simom
> > applied to u-boot-net/next
> > Thanks,
> > Ramon.
>
> Hi,
>
> Thanks for accepting this patch. I wondered if you could give an
> indication when it will reach u-boot/master?
>
> Cheers,
>
> Peter
>
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Follow the pull request I sent to Tom.