Kexec initial registers

Jimi Xenidis jimix at watson.ibm.com
Sun Jul 16 12:10:04 EST 2006


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

-JX




More information about the Linuxppc-dev mailing list