On Mon, Oct 9, 2017 at 12:51 PM, Geoff Levand <ge...@infradead.org> wrote: > Hi Rob, > > On 10/09/2017 09:48 AM, Rob Herring wrote: >> That's source (dts) version. I'm talking about the dtb binary version. >> Forcing the version to 0x10 should confirm and workaround your issue. >> Assuming this is in fact the issue, then a fix would look something >> like this: >> >> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c >> index 27c535af0be8..c78198de155d 100644 >> --- a/drivers/of/fdt.c >> +++ b/drivers/of/fdt.c >> @@ -1210,6 +1210,9 @@ bool __init early_init_dt_verify(void *params) >> if (fdt_check_header(params)) >> return false; >> >> + if (!fdt_offset_ptr(params)) >> + fdt_set_version(params, 16); >> + >> /* Setup flat device-tree pointer */ >> initial_boot_params = params; >> of_fdt_crc32 = crc32_be(~0, initial_boot_params, >> > > The boot fails later when processing the dtb. I tracked it down > to exactly what happens a while ago, and decided it was better to > just work on an updated bootloader based on a new kernel.
Right, I expect it fails in fdt_offset_ptr() which is pretty much used in every libfdt call later on. I'm fixing it here before the arch tries to read anything from the FDT. Rob