[v3 PATCH 1/1] booke/kprobe: make program exception to use one dedicated exception stack
galak at kernel.crashing.org
Thu Jul 14 23:27:44 EST 2011
On Jul 11, 2011, at 6:31 AM, Tiejun Chen wrote:
> When kprobe these operations such as store-and-update-word for SP(r1),
> stwu r1, -A(r1)
> The program exception is triggered, and PPC always allocate an exception frame
> as shown as the follows:
> old r1 ----------
> gpr ~ gpr
> gpr <--------- old r1 is stored.
> -------- <--------- pr_regs @offset 16 bytes
> back chain
> new r1 ----------
> Then emulate_step() will emulate this instruction, 'stwu'. Actually its
> equivalent to:
> 1> Update pr_regs->gpr = mem[old r1 + (-A)]
> 2> stw [old r1], mem[old r1 + (-A)]
> Please notice the stack based on new r1 may be covered with mem[old r1
> +(-A)] when addr[old r1 + (-A)] < addr[old r1 + sizeof(an exception frame0].
> So the above 2# operation will overwirte something to break this exception
> frame then unexpected kernel problem will be issued.
> So looks we have to implement independed interrupt stack for PPC program
> exception when CONFIG_BOOKE is enabled. Here we can use
> EXC_LEVEL_EXCEPTION_PROLOG to replace original NORMAL_EXCEPTION_PROLOG
> for program exception if CONFIG_BOOKE. Then its always safe for kprobe
> with independed exc stack from one pre-allocated and dedicated thread_info.
> Actually this is just waht we did for critical/machine check exceptions
> on PPC.
> Signed-off-by: Tiejun Chen <tiejun.chen at windriver.com>
I'm still very confused why we need a unique stack frame for kprobe/program exceptions on book-e devices.
Can you explain this further.
More information about the Linuxppc-dev