
Hi,
On 17 October 2018 at 11:14, Stephen Warren swarren@wwwdotorg.org wrote:
On 10/16/18 8:33 PM, Bin Meng wrote:
On Wed, Oct 17, 2018 at 7:01 AM Bin Meng bmeng.cn@gmail.com wrote:
Hi Stephen,
On Wed, Oct 17, 2018 at 12:27 AM Stephen Warren swarren@wwwdotorg.org wrote:
On 10/15/18 5:43 PM, Bin Meng wrote:
Hi Stephen,
On Tue, Oct 16, 2018 at 6:43 AM Stephen Warren swarren@wwwdotorg.org wrote:
On 10/15/18 3:53 PM, Stephen Warren wrote: > > On 10/15/18 2:17 PM, Simon Glass wrote: >> >> Hi Tom, >> >> The following changes since commit >> 6e7a186dc5d50f563e224e9ae7be70defff7ee0d: >> >> Merge tag 'arc-more-updates-for-2018.11-rc2-2' of >> git://git.denx.de/u-boot-arc (2018-10-15 07:20:07 -0400) >> >> are available in the Git repository at: >> >> git://git.denx.de/u-boot-dm.git tags/pull-15oct-18 >> >> for you to fetch changes up to >> 02f2d266c75106a2fefd1f4e8e6f703fe00ed21d: >> >> buildman: Add a --boards option to specify particular boards to >> build (2018-10-15 08:20:43 -0600) > > > There's something wrong with these patches; both Jetson TX1 and > Jetson > TX2 (both 64-bit ARM without SPL) fail to boot with this branch; the > system hangs with no output at all from U-Boot. Jetson TK1 (32-bit > ARM > with SPL) and sandbox boot fine.
Reverting the following solves the issue:
- dm: core: Mirror the chosen node parse logic in the livetree
scanning
- dm: core: Respect drivers with the DM_FLAG_PRE_RELOC flag in
lists_bind_fdt()
Reverting just (1) or just (2) does not. Can you please take a look? Thanks.
The failure is probably due to some drivers that Tegra uses are not properly written, ie: these drivers are declared via U_BOOT_DRIVER with flags DM_FLAG_PRE_RELOC yet it was never working (bound before relocation) until patch (1) & (2). Now these drivers get bound before relocation but they were never bound before (assume they were never required before relocation), so we should identify which driver were wrongly written, but as a quick solution, can you please enlarge the CONFIG_SYS_MALLOC_F_LEN of your board and have a try?
Yes, bumping CONFIG_SYS_MALLOC_F_LEN from 0x1800 to 0x1a90 solves the issue. Alternatively, removing DM_FLAG_PRE_RELOC in tegra_gpio.c or tegra186_gpio.c (depending on board/SoC) also solves this.
I suppose the correct solution is to remove the DM flag from the driver, since if it never used to work before your patches, it's clear that the flag/feature is not actually required.
Thank you Stephen. I will prepare a patch to update the tegra*_gpio driver.
Thanks Bin,
Ah, it turns out so many drivers/dts are mis-written ...
For example, the driver has the DM_FLAG_PRE_RELOC flag, and the dts file also has "u-boot,dm-pre-reloc". The "u-boot,dm-pre-reloc" must have been added to workaround the DM bug (fixed in patch 1 & 2 mentioned in this thread). But now since the DM bug has been fixed, these "u-boot,dm-pre-reloc" properties are really unnecessary but I am afraid I don't have the knowledge to clean up all of these.
Of course, I've identified some additional drivers that have DM_FLAG_PRE_RELOC flag set but dts file doesn't have "u-boot,dm-pre-reloc". These drivers should be updated to remove the DM_FLAG_PRE_RELOC flag like the Tegra GPIO drivers.
I don't see any cases where u-boot,dm-pre-reloc exists in DT for the Tegra GPIO driver specifically, so I think a simple patch removing the DM_FLAG_PRE_RELOC flag from the two Tegra GPIO drivers would be fine. Of course, I didn't look at any non-Tegra DTs, or at drivers other than Tegra GPIO.
OK.
I tend to agree that it is getting a bit late. I am considering delaying this pull request until the next merge window. I still have regmap and virtio to bring in. Tom, what do you think?
Regards, Simon