From: viktor.rosendahl@nokia.com (Viktor Rosendahl)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] Fix ldrd/strd emulation for kprobes/ARM
Date: Tue, 29 Mar 2011 14:26:39 +0300 [thread overview]
Message-ID: <4D91C1EF.1040102@nokia.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1103281822170.11889@xanadu.home>
On 03/29/2011 01:39 AM, ext Nicolas Pitre wrote:
>
> Please send to RMK's patch system.
>
OK, will do.
> I agree that it might be a better idea to simply reject the dubious
> cases upfront from arm_kprobe_decode_insn() and keep the actual
What do you mean by "dubious cases" ?
Do you mean oddball special cases of instructions that are fully legal
with a well defined behavior, although they are unlikely to be emitted
by gcc ?
..or do you mean instructions whose behavior are undefined by the
current architecture but would not necessarily cause an illegal
instruction exception ?
My take is that it could be worth checking for as many as possible of
the legal oddball cases. When it comes to instructions with undefined
behavior, I think the ideal would be if they are rejected by
arm_kprobe_decode_insn().
My guess is that most of the kprobe slowdown will not anyway come from a
few extra checks in the emulation/simulation code but from the handling
of the illegal instruction exceptions that will occur when the probe is
hit and at the end of single stepping.
> emulation code fast and free from odd conditions that might never be
> useful in practice. I think this is highly unlikely that we would find
> some usage of LDRD/STRD indexed by r15 in the kernel.
>
I guess that depends on the gcc backend. When doing an "objdump -d
vmlinux", I found this:
b00165fc <sort_main_extable>:
b00165fc: e59f0004 ldr r0, [pc, #4] ; b0016608
b0016600: e59f1004 ldr r1, [pc, #4] ; b001660c
b0016604: ea074262 b b01e6f94 <sort_extable>
b0016608: b0548840 .word 0xb0548840
b001660c: b0549770 .word 0xb0549770
Now, I admit that it's possible that somewhere beyond the horizon of my
understanding there is some good reason to do two LDRs into adjacent
registers from adjacent memory addresses, instead of merging them into
one LDRD.
However, it gives me the impression that it would not be that unlikely
that some future version of gcc could generate an LDRD in some function
prologues.
BTW, in my kernel, LDR indexed by r15 is a really common instruction at
the very beginning of functions. I am not sure why; it could have
something to do with the fact that the kernel is compiled without frame
pointers.
best regards,
Viktor
next prev parent reply other threads:[~2011-03-29 11:26 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-25 17:01 [PATCH] kprobes/arm: fix emulation of LDR/STR instruction when Rn == PC Viktor Rosendahl
2011-03-25 21:19 ` Tixy
2011-03-28 15:56 ` [PATCH] Fix ldrd/strd emulation for kprobes/ARM Viktor Rosendahl
2011-03-28 22:39 ` Nicolas Pitre
2011-03-29 11:26 ` Viktor Rosendahl [this message]
2011-03-29 16:55 ` Nicolas Pitre
2011-03-29 18:31 ` Russell King - ARM Linux
2011-03-29 18:44 ` Nicolas Pitre
2011-03-30 13:42 ` [PATCH] Reject kprobes when Rn==15 and writeback is set Viktor Rosendahl
2011-03-30 15:52 ` Tixy
2011-03-30 16:46 ` Viktor Rosendahl
2011-03-30 17:20 ` Tixy
2011-03-30 17:59 ` Nicolas Pitre
2011-03-30 19:39 ` Tixy
2011-03-30 20:48 ` Nicolas Pitre
2011-03-30 14:09 ` [PATCH] Fix ldrd/strd emulation for kprobes/ARM Viktor Rosendahl
2011-03-29 12:55 ` Tixy
2011-03-29 13:46 ` Viktor Rosendahl
2011-03-29 14:03 ` Tixy
2011-03-29 17:07 ` Nicolas Pitre
2011-03-28 16:27 ` [PATCH] kprobes/arm: fix emulation of LDR/STR instruction when Rn == PC Viktor Rosendahl
2011-03-29 9:12 ` Tixy
2011-03-26 2:03 ` Nicolas Pitre
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=4D91C1EF.1040102@nokia.com \
--to=viktor.rosendahl@nokia.com \
--cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.