From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <9e4733910807251551m3186fb3cy6796e1a07bb1aea2@mail.gmail.com> Date: Fri, 25 Jul 2008 18:51:26 -0400 From: "Jon Smirl" To: benh@kernel.crashing.org Subject: Re: can't boot mpc5200, powerpc: Enable AT_BASE_PLATFORM aux vector In-Reply-To: <9e4733910807251546k2388b1afgba52081c20332dc4@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 References: <9e4733910807251451s623b87cetcf7ed5ff6a12f012@mail.gmail.com> <20080725220038.GI9594@localdomain> <1217024108.11188.117.camel@pasglop> <9e4733910807251546k2388b1afgba52081c20332dc4@mail.gmail.com> Cc: ppc-dev , Nathan Lynch List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 7/25/08, Jon Smirl wrote: > On 7/25/08, Benjamin Herrenschmidt wrote: > > On Fri, 2008-07-25 at 17:00 -0500, Nathan Lynch wrote: > > > Jon Smirl wrote: > > > > I've lost my ability to boot on the mpc5200. Reverting this patch fixes it. > > > > > > How does it fail? > > > > > > > > > > @@ -1652,6 +1655,14 @@ struct cpu_spec * __init identify_cpu(unsigned > > > > long offset, unsigned int pvr) > > > > } else > > > > *t = *s; > > > > *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec; > > > > + > > > > + /* > > > > + * Set the base platform string once; assumes > > > > + * we're called with real pvr first. > > > > + */ > > > > + if (powerpc_base_platform == NULL) > > > > + powerpc_base_platform = t->platform; > > > > + > > > > > > Hmm, maybe this needs RELOC/PTRRELOC tricks? > > > > > > Hrm... indeed. > > > > if (RELOC(powerpc_base_platform)) > > RELOC(powerpc_base_platform) = t->platform; This boots: #define RELOC(x) (*PTRRELOC(&(x))) if (RELOC(powerpc_base_platform)) RELOC(powerpc_base_platform) = t->platform; > > > It completely fails booting, no console or anything. > > Where is RELOC defined, prom_init.c? > > #ifdef CONFIG_PPC64 > #define RELOC(x) (*PTRRELOC(&(x))) > #define ADDR(x) (u32) add_reloc_offset((unsigned long)(x)) > #define OF_WORKAROUNDS 0 > #else > #define RELOC(x) (x) > #define ADDR(x) (u32) (x) > #define OF_WORKAROUNDS of_workarounds > int of_workarounds; > #endif > > > > > > > try that. > > > > Ben. > > > > > > > > > > -- > Jon Smirl > jonsmirl@gmail.com > -- Jon Smirl jonsmirl@gmail.com