MPC5200 does not boot
Nicholas Piggin
npiggin at gmail.com
Tue Aug 2 13:16:43 AEST 2016
On Tue, 02 Aug 2016 12:44:33 +1000
Benjamin Herrenschmidt <benh at 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 <benh at 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 <benh at kernel.crashing.org>
> > > Signed-off-by: Michael Ellerman <mpe at 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
More information about the Linuxppc-dev
mailing list