Thread (15 messages) 15 messages, 4 authors, 2011-08-31

Re: [v3 PATCH 1/1] booke/kprobe: make program exception to use one dedicated exception stack

From: Kumar Gala <hidden>
Date: 2011-07-14 13:27:55

On Jul 11, 2011, at 6:31 AM, Tiejun Chen wrote:
When kprobe these operations such as store-and-update-word for SP(r1),
=20
stwu r1, -A(r1)
=20
The program exception is triggered, and PPC always allocate an =
exception frame
as shown as the follows:
=20
old r1 ----------
        ...
        nip
        gpr[2] ~ gpr[31]
        gpr[1] <--------- old r1 is stored.
        gpr[0]
      -------- <--------- pr_regs @offset 16 bytes
      padding
      STACK_FRAME_REGS_MARKER
      LR
      back chain
new r1 ----------
Then emulate_step() will emulate this instruction, 'stwu'. Actually =
its
equivalent to:
1> Update pr_regs->gpr[1] =3D mem[old r1 + (-A)]
2> stw [old r1], mem[old r1 + (-A)]
=20
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.
=20
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.
=20
Signed-off-by: Tiejun Chen <redacted>
---
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.

- k
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help