Kexec initial registers
Benjamin Herrenschmidt
benh at kernel.crashing.org
Mon Jul 17 01:59:15 EST 2006
On Sat, 2006-07-15 at 22:10 -0400, Jimi Xenidis wrote:
> On Jul 14, 2006, at 5:08 PM, Benjamin Herrenschmidt wrote:
>
> > On Fri, 2006-07-14 at 12:02 -0400, Jimi Xenidis wrote:
> >> This is what I have so far:
> >>
> >> r3: address of device tree blob
> >> r4: address that kernel was loaded
> >> r5: not OF (=0)
> >
> > Correct and that's all that should be needed
> >
> >> r13: local_paca address (0?)
> >
> > You shouldn't have to care about r13 at all, it should be set by the
> > kernel before it's used. If not, please let us know as that means
> > there
> > is a bug :)
>
> Not! 99.99% :)
> When loading a kernel under Xen using kexec we set r1-r5 and set all
> other GPRS to all 5's (cuz we can) with CONFIG_PPC_EARLY_DEBUG=y and
> all hell breaks loose in the first printk()/DBG() from early_setup()
> for:
> kernel/printk.c:506
> 506 spin_lock_irqsave(&logbuf_lock, flags);
>
> where is access local_paca.
>
> I think everyone else (ot just the sane ones) just sets all GPRS to 0
Then we have a bug and we need to initialize local_paca before we call
early_setup...
Ben.
More information about the Linuxppc-dev
mailing list