[U-Boot] [PATCH v4 00/19] sunxi: sync H3, H5, A64 DTs from mainline Linux
Jagan Teki
jagan at amarulasolutions.com
Mon Apr 2 07:40:06 UTC 2018
Hi Andre,
On Thu, Mar 29, 2018 at 2:49 PM, Andre Przywara <andre.przywara at arm.com> wrote:
> Hi,
>
> On 29/03/18 09:51, Jagan Teki wrote:
>> Hi Andre,
>>
>> On Wed, Mar 14, 2018 at 7:26 AM, Andre Przywara <andre.przywara at arm.com> wrote:
>>> A minor update to the v3 version sent earlier this month.
>>> I reworked patch 09 to drop the direct MMC environment for 32-bit Allwinner
>>> boards as well and keep the current MMC offset.
>>> For now I also dropped the two patches changing (back) the MMC regulator.
>>> I still believe they are good to have and keep them as U-Boot specific
>>> .dtsi files in my tree, possibly posting them later again.
>>>
>>> As the previous version, this combines the EMAC DT support update with
>>> an update of the full Linux kernel DTs for all H3, H5 and A64 boards.
>>>
>>> Patch 01 leaves some hint in the README how to avoid the situation
>>> when overrunning U-Boot's image size on 64-bit boards.
>>> The old v2 EMAC DT update series is in patches 02-08, it prepares U-Boot's
>>> EMAC driver for using the new DT binding used in Linux, also updates
>>> the DTs to the new EMAC DT node already.
>>>
>>> Changes to sync the whole of U-Boot's DT files for the H3, H5 and A64 SoCs
>>> to those from Linux are in the following patches. However this first requires
>>> lifting the space limit we currently have due to the raw MMC environment.
>>> Patch 09 disables that for all sunxi boards, to give us finally some
>>> space. Patches 10 and 11 consequently revert the disabling of features we
>>> saw a few weeks ago to migitate the size problem.
>>>
>>> Patches 12-19 then bring in the Linux DTs, split by SoCs, with the .dtsi
>>> files first, then the board files.
>>>
>>> Merging the H3 and H5 device tree files brings in significant changes,
>>> also to the structure of the .dtsi files. However U-Boot's own DT usage
>>> is pretty limited, so it doesn't matter.
>>>
>>> The huge benefit of syncing the DTs is that we can use U-Boot's DT copy
>>> to directly pass it to the kernel, avoiding to actually load a .dtb file
>>> from somewhere. To allows seamless and automatic UEFI booting, so
>>> distribution installer images should just work (TM).
>>>
>>> As a goodie the final patch brings in the actual SoPine + baseboard DT
>>> files, which we were completely missing so far.
>>>
>>> This is based on sunxi/master (2d53018a0ef2).
>>>
>>> Cheers,
>>> Andre.
>>>
>>> Changelog v3 .. v4:
>>> - remove MMC environment for all Allwinner boards (including 32 bit ones)
>>> - keep MMC environment offset to the old values
>>> - drop DT adjustments to use fixed MMC regulator
>>>
>>> Changelog v2 .. v3:
>>> 01: added, was on the list before
>>> 02: drop redundant H5 line
>>> 03-08: unchanged
>>> 09-20: added
>>>
>>> Changelog v1 .. v2:
>>> 01, 02, 03: unchanged
>>> 04, 05, 06, 07: added
>>>
>>> Andre Przywara (19):
>>> sunxi: README.sunxi64: Add hint about non-debug of ARM Trusted
>>> Firmware
>>> sunxi: gpio: add missing compatible strings
>>> net: sun8i-emac: support new pinctrl DT bindings
>>> net: sun8i-emac: add support for new EMAC DT binding
>>> arm: dts: sunxi: update A64 to new EMAC binding
>>> arm: dts: sunxi: update H3 to new EMAC binding
>>> arm: dts: sunxi: update H5 to new EMAC binding
>>> net: sun8i-emac: remove support for old binding
>>> sunxi: disable direct MMC environment
>>> sunxi: revert disabling of features
>>> Revert "sunxi: Pine64: temporarily remove extra Pine64 non-plus DT"
>>> sunxi: DT: A64: update device tree file for Allwinner A64 SoC
>>> sunxi: DT: A64: update board .dts files from Linux
>>> sunxi: DT: update device tree files for Allwinner H3 and H5 SoCs
>>> sunxi: DT: H5: update board .dts files from Linux
>>> sunxi: DT: H3: update board .dts files from Linux
>>> sunxi: DT: H3: update libre-cc board .dts file
>>> sunxi: DT: H2+: update Opi-zero .dts
>>> sunxi: DT: A64: add proper SoPine baseboard device tree
>>
>> I agree that we have space for now with U-Boot proper since we removed
>> MMC raw, but why we need to Sync all the dts nodes from Linux?
>
> The main reason for me is to allow passing U-Boot's DT to Linux - or any
> other OS, for that matter. This happens already automatically with the
> distro defaults UEFI boot: just put in an UEFI enabled USB pen drive
> (distro installers) and U-Boot will boot from there - without any user
> interaction or special boot script, without the OS providing any DTs.
>
> Conceptually there is only one DT for each board. The fact that U-Boot
> has deviated has no technical reason, it's just not being updated.
>
>> it is costing some space right?
>
> We don't care about this so much anymore. For practical reasons it would
> be good to stay below 984KB (from after the SPL till 1MB, where the
> first partition normally starts). Adding like 10 KB to the image size is
> nothing in there, especially when looking at the benefits - automatic
> boot of any OS.
>
>> becuase
>> - most of the nodes doesn't have proper drivers yet example: clock,
>> reset, spi, axp803 and some include files and etc
>> - Few nodes like mmc1 from bananpi-m64 doesn't need from U-Boot point-of-view
>
> Yes, U-Boot itself does not use those - but it doesn't hurt either. We
> don't need to invent some notion of U-Boot DT. The DT is not an OS
> configuration file, it's a hardware description.
>
>> What I'm trying to say is we should anyway sync to Linux bindings and
>> dts files, but that could be like step-by-step based on the relevant
>> driver support with proper testing this way we can monitor the "Size"
>> instead of adding unneeded(for now) and untested once now struggling
>> to think about size constraints later.
>
> I hope we will never have to deal with hard size constraint for U-Boot
> proper anymore. I would like to judge any increase in size by its
> benefit. And booting random UEFI enabled OSes out of the box is a very
> good rationale for adding 10KB to the image size.
>
> Keep in mind: Eventually you have to load this DT anyway, so effectively
> you will save on the image size, because you avoid duplication. Actually
> the OS does not need to carry all supported DTs, because the only one
> needed is provided by U-Boot.
If I understood correctly, look like all comments from your side for
syncing full Linux dts have benefit with automatic boot of OS.
This feature make U-Boot to have full Linux dts inside, Can't we
implement automatic-boot-of-os distro to grab Linux dtb during
commands stage like other distro does? Because this make few
development struggles for U-Boot project like (few of the comments are
repeated from previous mail, but I'm trying to group them all)
- Unnecessary to maintain nodes which are not required for bootloader
and which doesn't have proper dt drivers.
- It becomes more patches for each-and-every sync.
- We can compare the sync with Linux dt and simply apply on U-Boot
which look not good to project growing.
- Increase size(though it 10KB increase) it becomes unnecessary size
from U-Boot point-of-view
>> If are fine with this please re-work based on above points and resend
>> the next version otherwise please comment.
>
> I wonder if we could just merge the first few patches now, up until and
> including 11/19. The EMAC DT binding deviation we have at the moment is
> really annoying and those patches do not increase the size.
Will re-check and apply all OK.
>
> We can have a separate discussion about the rest, if you really like.
Worth to have thread with subject like "Full DT sync from Linux is required?"
Jagan.
More information about the U-Boot
mailing list