On Tue, 02 Aug 2016 12:44:33 +1000 Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote:
> On Tue, 2016-08-02 at 00:44 +0200, Michal Sojka wrote: > > Hi Benjamin, > > > > the following commit causes my MPC5200 not to boot. > > > > commit 9402c684613163888714df0955fa1f17142b08bf > > > Author: Benjamin Herrenschmidt <b...@kernel.crashing.org> > > Date: Tue Jul 5 15:03:41 2016 +1000 > > > > powerpc: Factor do_feature_fixup calls > > > > 32 and 64-bit do a similar set of calls early on, we move it all to > > a single common function to make the boot code more readable. > > > > Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> > > > Signed-off-by: Michael Ellerman <m...@ellerman.id.au> > > > > I suspect that the cause will be similar as described in commit > > 1cd03890ea64795e53f17a94928cca22495acb2a. Unfortunately, I don't have > > much time to debug this, but I can easily test patches. > > Are you sure of your bisection ? Did you verify that reverting that one > patch fixes it ? Because all this does is move code to a function, > the code is functionally the same and called in the same place... + struct cpu_spec *spec = *PTRRELOC(&cur_cpu_spec); + + /* + * Apply the CPU-specific and firmware specific fixups to kernel text + * (nop out sections not relevant to this CPU or this firmware). + */ + do_feature_fixups(spec->cpu_features, + PTRRELOC(&__start___ftr_fixup), + PTRRELOC(&__stop___ftr_fixup)); Shouldn't these be PTRRELOC(spec)->cpu_features ? You are relocating access to the pointer word, but not the address it contains. identify_cpu() returns the relocated pointer which is what 32-bit used to use. Thanks, Nick _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev