Benjamin Herrenschmidt wrote:
On Thu, 2013-02-21 at 22:44 +0100, Phileas Fogg wrote:
Stripped OpenWRT image:
------------------------
c00000000001a474: 48 00 00 05 bl 0xc00000000001a478
c00000000001a478: 7c a8 02 a6 mflr r5
c00000000001a47c: 38 a5 00 1c addi r5,r5,28
c00000000001a480: 7c 21 0b 78 mr r1,r1
c00000000001a484: 80 85 00 00 lwz r4,0(r5)
c00000000001a488: 2c 04 00 00 cmpwi r4,0
c00000000001a48c: 40 82 00 62 bnea- 0x60
c00000000001a490: 4b ff ff f0 b 0xc00000000001a480
c00000000001a494: 00 00 00 00 .long 0x0
c00000000001a498: a0 6d 00 48 lhz r3,72(r13)
c00000000001a49c: 48 00 00 11 bl 0xc00000000001a4ac
Smell like a bad stack pointer to me...
One thing I noticed is that kexec doesn't seem to hard disable
interrupts, which is ... fishy at best. It should do that
before it switches stacks around. Dunno if that's the cause
of the problem but it might be worth adding a hard_irq_disable()
after all the local_irq_disable(), making sure we are hard
disabled before going into asm.
Cheers,
Ben.
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
Hi,
i wanted to let you know that i tested your advice. And let me say, it's was a
damn good advice :) I can boot FreeBSD loader on Linux 3.8 now, no SHA256
checksum failures. And no panics with FreeBSD LiveCD anymore too.
I just inserted hard_irq_disable() after each local_irq_disable() in
arch/powerpc/kernel/machine_kexec_64.c
Thanks
regards
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev