linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "tiejun.chen" <tiejun.chen@windriver.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [v5][PATCH 2/3] powerpc/kprobe: complete kprobe and migrate exception frame
Date: Tue, 18 Sep 2012 14:13:00 +0800	[thread overview]
Message-ID: <505810EC.6060907@windriver.com> (raw)
In-Reply-To: <1347944998.2386.44.camel@pasglop>

On 09/18/2012 01:09 PM, Benjamin Herrenschmidt wrote:
> On Tue, 2012-09-18 at 15:05 +1000, Benjamin Herrenschmidt wrote:
>> On Mon, 2012-09-17 at 17:54 +0800, Tiejun Chen wrote:
>>> -#ifdef CONFIG_PREEMPT
>>>   	b	restore
>>>
>>>   /* N.B. the only way to get here is from the beq following ret_from_except. */
>>>   resume_kernel:
>>> -	/* check current_thread_info->preempt_count */
>>> +	/* check current_thread_info, _TIF_EMULATE_STACK_STORE */
>>>   	CURRENT_THREAD_INFO(r9, r1)
>>> +	lwz	r8,TI_FLAGS(r9)
>>> +	andis.	r8,r8,_TIF_EMULATE_STACK_STORE@h
>>> +	beq+	1f
>>> +
>>> +	addi	r8,r1,INT_FRAME_SIZE	/* Get the kprobed function entry */
>>> +
>>> +	lwz	r3,GPR1(r1)
>>> +	subi	r3,r3,INT_FRAME_SIZE	/* dst: Allocate a trampoline exception frame */
>>> +	mr	r4,r1			/* src:  current exception frame */
>>> +	li	r5,INT_FRAME_SIZE	/* size: INT_FRAME_SIZE */
>>> +	li	r6,0			/* start offset: 0 */
>>> +	mr	r1,r3			/* Reroute the trampoline frame to r1 */
>>> +
>>> +	/* Copy from the original to the trampoline. */
>>> +	li	r6,0
>>
>> You just did that li r6,0 2 lines above :-) I'll fix it up manually
>> while applying.
>
> In fact the srwi can be dropped completely, we can just load r5 with the
> divided value. Committed, will push later today, please test.

I retest to kprobe do_fork() and show_interrupts() with/without enabling 
CONFIG_PREEMPT, separately, looks still work.

For 32-bit:
------------
+       /* Copy from the original to the trampoline. */
+       lwz     r3,GPR1(r1)
+       subi    r3,r3,INT_FRAME_SIZE    /* dst: Allocate a trampoline exception 
frame */
+       mr      r4,r1                   /* src:  current exception frame */
+       li      r5,INT_FRAME_SIZE/4     /* size: INT_FRAME_SIZE */
+       li      r6,0                    /* start offset: 0 */
+       mr      r1,r3                   /* Reroute the trampoline frame to r1 */
+       mtctr   r5
+2:     lwzx    r0,r6,r4
+       stwx    r0,r6,r3
+       addi    r6,r6,4
+       bdnz    2b

And for 64-bit:
---------------
+       /* Copy from the original to the trampoline. */
+       lwz     r3,GPR1(r1)
+       subi    r3,r3,INT_FRAME_SIZE    /* dst: Allocate a trampoline exception 
frame */
+       mr      r4,r1                   /* src:  current exception frame */
+       li      r5,INT_FRAME_SIZE/8     /* size: INT_FRAME_SIZE */
+       li      r6,0                    /* start offset: 0 */
+       mr      r1,r3                   /* Reroute the trampoline frame to r1 */
+       mtctr   r5
+2:     ldx     r0,r6,r4
+       stdx    r0,r6,r3
+       addi    r6,r6,8
+       bdnz    2b

Thanks
Tiejun

  reply	other threads:[~2012-09-18  6:13 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-17  9:54 [v5][PATCH 1/3] powerpc/kprobe: introduce a new thread flag Tiejun Chen
2012-09-17  9:54 ` [v5][PATCH 2/3] powerpc/kprobe: complete kprobe and migrate exception frame Tiejun Chen
2012-09-17 10:02   ` David Laight
2012-09-17 10:19     ` tiejun.chen
2012-09-18  5:05   ` Benjamin Herrenschmidt
2012-09-18  5:09     ` Benjamin Herrenschmidt
2012-09-18  6:13       ` tiejun.chen [this message]
2012-09-17  9:54 ` [v5][PATCH 3/3] powerpc/kprobe: don't emulate store when kprobe stwu r1 Tiejun Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=505810EC.6060907@windriver.com \
    --to=tiejun.chen@windriver.com \
    --cc=benh@kernel.crashing.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).