[GIT PULL] pxa: features for next

Eric Miao eric.y.miao at gmail.com
Mon Jul 11 04:31:04 EDT 2011


On Mon, Jul 11, 2011 at 3:52 PM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Mon, Jul 11, 2011 at 03:47:27PM +0800, Eric Miao wrote:
>> On Mon, Jul 11, 2011 at 3:46 PM, Russell King - ARM Linux
>> <linux at arm.linux.org.uk> wrote:
>> > On Mon, Jul 11, 2011 at 03:44:54PM +0800, Eric Miao wrote:
>> >> On Mon, Jul 11, 2011 at 3:41 PM, Russell King - ARM Linux
>> >> <linux at arm.linux.org.uk> wrote:
>> >> > On Mon, Jul 11, 2011 at 03:27:15PM +0800, Eric Miao wrote:
>> >> >>       ARM: pxa: avoid accessing interrupt registers directly
>> >> >>       ARM: pxa: introduce {icip,ichp}_handle_irq() to prepare MULTI_IRQ_HANDLER
>> >> >
>> >> > What happened about the __exception issue with asm_do_IRQ?
>> >> >
>> >>
>> >> I just removed the __exception from the C handler.
>> >
>> > From asm_do_IRQ ?
>> >
>>
>> No. From icip_handle_irq() and ichp_handle_irq(). Thought the ability to
>> unwind asm_do_IRQ() is more important.
>
> Which means you didn't understand my objection when I reviewed your patch.
>
> The __exception annotation on a function causes this to happen:
>
> [<c002406c>] (asm_do_IRQ+0x6c/0x8c) from [<c0024b84>] (__irq_svc+0x44/0xcc)
> Exception stack(0xc3897c78 to 0xc3897cc0)
> 7c60:                                                       4022d320 4022e000
> 7c80: 08000075 00001000 c32273c0 c03ce1c0 c2b49b78 4022d000 c2b420b4 00000001
> 7ca0: 00000000 c3897cfc 00000000 c3897cc0 c00afc54 c002edd8 00000013 ffffffff
>
> Where that stack dump represents the pt_regs for the exception which
> happened.  Any function found in while unwinding will cause this to
> be printed.
>
> If you insert a C function between the IRQ assembly and asm_do_IRQ, the
> dump you get from asm_do_IRQ will be the stack for your function, not
> the pt_regs.  That makes the feature useless.
>

Sorry for my stupidity, but I think I still don't get it quite correctly.
When both functions are prefixed with __exception_irq_entry, if
unwind works correctly, both stacks will be dumped, how would
the asm_do_IRQ will be stack for the function inserted?



More information about the linux-arm-kernel mailing list