On Mon, Oct 9, 2017 at 11:02 AM, Geoff Levand <ge...@infradead.org> wrote: > Hi Rob, > > On 10/06/2017 10:47 AM, Rob Herring wrote: >> On Fri, Oct 6, 2017 at 11:16 AM, Geoff Levand <ge...@infradead.org> wrote: >>> Hi Simon, >>> >>> On 09/22/2017 07:32 AM, Simon Richter wrote: >>>> I'm trying to get a PS3 to boot with the powerpc64 kernel in stretch, >>>> but had no luck so far. kexec from the boot menu happens, then the >>>> screen goes blank and stays that way. I have a 3.5 kernel that boots and >>>> works fine. >>> >>> Unfortunately, there was a kernel ABI breakage that made the current >>> PS3 petitboot bootloader (kexec) unable to boot kernels newer than >>> v3.16-rc1. Here's the commit: >>> >>> commit e6a6928c3ea1d0195ed75a091e345696b916c09b (v3.16-rc1) >>> Author: Rob Herring <r...@kernel.org> >>> Date: Wed Apr 2 15:10:14 2014 -0500 >>> of/fdt: Convert FDT functions to use libfdt >>> >>> I've been working on an updated bootloader, but it is not >>> ready yet. If you would like to help with it, let me know. >> >> What's the version of the dtb? There's some issues around that[1]. I >> never heard back in that case, so it never got fixed in the kernel. > > > The current petitboot uses Linux-v2.6.30.9. The dts shows '/dts-v1/'.
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,