
Hi Simon
On Thu, 2017-07-13 at 03:22 -0600, Simon Glass wrote:
Hi Marcel,
On 13 July 2017 at 02:38, Marcel Ziswiler <marcel.ziswiler@toradex.co m> wrote:
On Tue, 2017-07-11 at 21:29 -0600, Simon Glass wrote:
This moves four entire boards to use a live device tree as an example of the impact.
Nyan-big was chosen because I can easily and boot U-Boot without any media swapping, etc. Beaver is enabled as well since it failed to boot with serial v1 due to a disabled console node. Jetson-TK1 is chosen because I found some USB problems in the v2 patches. Jetson-TX1 is added because Stephen Warren found some problems with PCI.
Total code size impact on this board is approximately 9KB on U- Boot and 64 bytes on SPL:
27: dm: tegra: nyan-big: Move to livetree arm: (for 1/1 boards) all +9264.0 bss -16.0 data +44.0 rodata +92.0 spl/u-boot-spl:all +326.0 spl/u-boot-spl:rodata +262.0 spl/u-boot-spl:text +64.0 text +9144.0
Tegra does not use Thumb2, which would likely reduce the code size by about 25%, indicating a code-size impact of perhaps 7KB.
Boot time is affected slightly. For nyan-big the times with flat tree are:
2,108 dm_r 7,924 dm_spl 120,724 dm_f 171,816 lcd
With the livetree:
721 dm_r 3,764 of_live 7,990 dm_spl 120,736 dm_f 168,215 lcd
As expected the spl and pre-relocation times are not affected. In the post-relocation case, the live tree must be built, which here takes about 3.8ms. Driver-model device creation takes a bit of 1ms less time with the livetree, so all up the cost is about 2.4ms. After DM init there appears to be a slight reduction in the time taken to set up devices (from 327ms to 319ms) so overall the live tree does not appear to be any slower. This is because pre-parsing the device tree makes reading it later faster.
The use of livetree is controlled by a the CONFIG_OF_LIVE option. When enabled, U-Boot builds a livetree immediately after relocation and uses it from then on.
This series is available at u-boot-dm/livet-working
Changes in v4:
- Add new patch to add ofnode_read_resource()
- Add new patch to fix up ofnode_get_addr_index() for 64-bit
values
- Update to use ofnode_read_resource()
- Drop fdtdec.h header
- Update to deal with rename of ofnode_read_prop()
- Rebase to master
- Drop changes already applied
- Fix PCI and i2c init problems on jetson-tx1
Could you elaborate a little bit more on this as from the actual patch set I don't seem to be able to figure out how/what exactly you did in that respect.
Other than that it at least works for me on my Beaver and Jetson TK1 so you may add the following to the whole series:
Tested-by: Marcel Ziswiler marcel.ziswiler@toradex.com Tested-on: Beaver, Jetson-TK1
Thanks.
You are very welcome.
I cannot test Jetson-TK1 yet but I think these changes are needed to make USB work, and possibly PCI:
- Add new patch to add ofnode_read_resource()
- Update to use ofnode_read_resource()
(see the appropriate patches with these changes mentioned in the change log)
OK, yeah I saw those but just could not quite make the connection.
Basically the code for setting up the USB PHY did not work and that stopped PCI from working, I believe.
OK, makes sense. So it was rather a high level issue then.
The changes applicable to TX1 are:
- Add new patch to fix up ofnode_get_addr_index() for 64-bit
values
(this fixed I2C reading the register address)
Perfect, while we should have a TX1 laying around somewhere as well I currently failed finding it. Probably one of my co-workers currently on vacation took it and is playing with it (;-p).
[..]
Regards, Simon
Cheers
Marcel
BTW: I'm now in the process of migrating our boards as well and will send patches for that soon.