Re: PS3: Strange issue with kexec and FreeBSD loader
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2013-02-21 23:46:18
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.