linux/arch/powerpc/lib
Anju T 51c9c08439 powerpc/kprobes: Implement Optprobes
Current infrastructure of kprobe uses the unconditional trap instruction
to probe a running kernel. Optprobe allows kprobe to replace the trap
with a branch instruction to a detour buffer. Detour buffer contains
instructions to create an in memory pt_regs. Detour buffer also has a
call to optimized_callback() which in turn call the pre_handler(). After
the execution of the pre-handler, a call is made for instruction
emulation. The NIP is determined in advanced through dummy instruction
emulation and a branch instruction is created to the NIP at the end of
the trampoline.

To address the limitation of branch instruction in POWER architecture,
detour buffer slot is allocated from a reserved area. For the time
being, 64KB is reserved in memory for this purpose.

Instructions which can be emulated using analyse_instr() are the
candidates for optimization. Before optimization ensure that the address
range between the detour buffer allocated and the instruction being
probed is within +/- 32MB.

Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-02-10 13:28:04 +11:00
..
alloc.c
checksum_32.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
checksum_64.S powerpc/64: Use optimized checksum routines on little-endian 2017-01-25 13:34:18 +11:00
checksum_wrappers.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
code-patching.c powerpc/kprobes: Implement Optprobes 2017-02-10 13:28:04 +11:00
copy_32.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
copypage_64.S powerpc/64: Fix naming of cache block vs. cache line 2017-02-06 19:46:04 +11:00
copypage_power7.S
copyuser_64.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
copyuser_power7.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
crtsavres.S
div64.S
feature-fixups-test.S
feature-fixups.c
hweight_64.S
ldstfp.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
locks.c
Makefile powerpc/64: Use optimized checksum routines on little-endian 2017-01-25 13:34:18 +11:00
mem_64.S
memcmp_64.S
memcpy_64.S
memcpy_power7.S
rheap.c
sstep.c powerpc/sstep: Return directly after a failed address_ok() in emulate_step() 2017-01-25 13:34:21 +11:00
string_64.S powerpc/64: Fix naming of cache block vs. cache line 2017-02-06 19:46:04 +11:00
string.S powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
usercopy_64.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
vmx-helper.c
xor_vmx.c