[PATCH 0/3] cmd: pxe: support INITRD and FDT selection with FIT
Patrick DELAUNAY
patrick.delaunay at foss.st.com
Tue Jan 3 17:10:53 CET 2023
On 12/13/22 15:48, Quentin Schulz wrote:
> Hi Patrick,
>
> On 12/13/22 15:34, neil.armstrong at linaro.org wrote:
>> On 13/12/2022 15:31, Patrick DELAUNAY wrote:
>>> Hi,
>>>
>>> On 11/22/22 20:43, Neil Armstrong wrote:
>>>> On 22/11/2022 20:11, Neil Armstrong wrote:
>>>>> Hi,
>>>>>
>>>>> On 21/11/2022 13:23, Quentin Schulz wrote:
>>>>>> Hi Patrick,
>>>>>>
>>>>>> Thanks for looking at it.
>>>>>>
>>>>>> On 10/28/22 11:01, Patrick Delaunay wrote:
>>>>>>>
>>>>>>> Since the commit d5ba6188dfbf ("cmd: pxe_utils: Check
>>>>>>> fdtcontroladdr
>>>>>>> in label_boot") the FDT or the FDTDIR label is required in
>>>>>>> extlinux.conf
>>>>>>> and the fallback done by bootm command when only the device tree
>>>>>>> is present
>>>>>>> in this command parameters is no more performed when FIT is used
>>>>>>> for
>>>>>>> kernel.
>>>>>>>
>>>>>>> The next file "extlinux.conf" no more selects the device tree in
>>>>>>> FIT
>>>>>>> but use the pxe fallback with the device tree of U-Boot.
>>>>>>>
>>>>>>> menu title Select the boot mode
>>>>>>> DEFAULT test
>>>>>>> LABEL test
>>>>>>> KERNEL /fitImage
>>>>>>>
>>>>>>> This serie restores the possibility to use a FIT in extlinux.conf
>>>>>>> by using FDT label with the same string.
>>>>>>>
>>>>>>> menu title Select the boot mode
>>>>>>> DEFAULT test
>>>>>>> LABEL test
>>>>>>> KERNEL /fitImage
>>>>>>> FDT /fitImage
>>>>>>>
>>>>>>> even when a specific FIT config is used:
>>>>>>>
>>>>>>> menu title Select the boot mode
>>>>>>> DEFAULT test
>>>>>>> LABEL test
>>>>>>> KERNEL /fitImage#config
>>>>>>> FDT /fitImage#config
>>>>>>>
>>>>>>> The last commit of the series is only a minor improvement.
>>>>>>>
>>>>>>
>>>>>> I tested this on my Puma RK3399 and it does work again, thanks.
>>>>>>
>>>>>> However, I'm not sure this is what we should go for?
>>>>>>
>>>>>> My worry is the following:
>>>>>> What happens for old releases (pre-v2022.04) where KERNEL worked
>>>>>> just fine without the FDT to load the fdt from the fitimage conf
>>>>>> specified in KERNEL field? Would we now need to keep an
>>>>>> extlinux.conf for pre-2022.04 releases where FDT wouldn't be set
>>>>>> and one for 2023.01 and later where FDT would be mentioned? That
>>>>>> does not seem like a good thing for distros.
>>>>>>
>>>>>> I unfortunately cannot answer the question myself without
>>>>>> spending significant effort patching v2022.01 to get it to work
>>>>>> on our Puma module. Does anyone have access to a board to quickly
>>>>>> check an extlinux.conf with KERNEL and FDT set to /fitImage on a
>>>>>> v2022.01 release?
>>>>>
>>>>> I'm building kirkstone images with meta-meson having v2022.01,
>>>>> I'll test with FDT set to /fitImage to see if it breaks.
>>>>
>>>> It breaks:
>>>> Found /extlinux/extlinux.conf
>>>> Retrieving file: /extlinux/extlinux.conf
>>>> 1: Yocto
>>>> Retrieving file: /fitImage
>>>> append: root=PARTUUID=3ebc0005-02 rootwait console=ttyAML0,115200
>>>> Retrieving file: /fitImage
>>>> Bad Linux ARM64 Image magic!
>>>> SCRIPT FAILED: continuing...
>>>>
>>>
>>> Can you share the extlinux file used for your test ?do you have my
>>> patch ?
>>
>> It was explicitly without your patch as Quentin asked, he hoped addingh
>> "FDT /fitImage" would not break u-boot pre d5ba6188dfbf, but no.
>>
>
> Your implementation requires changes in extlinux.conf (which could be
> fine, I'm not arguing about this specifically). I however think we
> need those required changes to be backward compatible with older U-Boot.
>
> This means, a new extlinux.conf that works on newer U-Boot should also
> work on older U-Boot without your patch.
>
> Otherwise, we would have the following:
>
> U-Boot \ extlinux.conf || old | new
> ====================================
> old || OK | NOK
> new || NOK | OK
>
> What I am hoping for is:
> U-Boot \ extlinux.conf || old | new
> ====================================
> old || OK | OK
> new || NOK | OK
>
> or even fix the support for new U-Boot with old extlinux.conf (but
> that seems not possible because how d5ba6188dfbf ("cmd: pxe_utils:
> Check fdtcontroladdr in label_boot") works?).
>
Yes but I don't see any possible solution to solve all the combination
with d5ba6188dfbf and without or without FIT:
the old extlinux.conf with FIT are already no more working as expected
with current U-Boot (1)
when FDT and FDTDIR are absent
extlinux.conf || kernel = uImage | kernel= FIT |
kernel = FIT
|| FDT absent | FDT absent | FDT =
FIT (my proposal)
============================================================================================
U-Boot <= v2022.01-rc2 || KO | OK using DT in FIT | not
supported
U-Boot >= 2022.01-rc3 || OK (1) | OK(2)using U-Boot DT | not
supported
next with my proposal || OK (1) | OK(2)using U-Boot DT | OK
(using DT in FIT)
(1) with d5ba6188dfbf
(2) Risk to have unaligned DT between U-Boot (old) and kernel (new)
=> U-Boot behavior change with 2022.01-rc3(1)
> This would give an easy migration path to any creator of this
> extlinux.conf file by just migrating to the new format while not
> requiring it to care about the version of U-Boot being used.
I agree, it is better to be backward compatible.
So I search a solution to keep the new feature introduced by
d5ba6188dfbf ("cmd: pxe_utils: Check fdtcontroladdr in label_boot") but
only when FIT is not used and fallback to previous behavior for FIT....
but it is too complicated: pxe utils need to load the "kernel_addr" and
verify if it is a FIT before to check if "fdtcontroladdr" is provided,
but I can test an solution if you have a proposal.
Moreover I assumed the FIT feature is not largely used in generated
extlinux.conf file as the regression introduced by 2022.01-rc2wasn't
detected until now.
>
> Cheers,
> Quentin
regards
Patrick
More information about the U-Boot
mailing list