[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: PS3?



On Mon, Oct 9, 2017 at 12:51 PM, Geoff Levand <geoff@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


Reply to: