aboutsummaryrefslogtreecommitdiff
path: root/lib/mpi/mpi-internal.h
diff options
context:
space:
mode:
authorGuo Ren <[email protected]>2020-12-17 16:01:42 +0000
committerPalmer Dabbelt <[email protected]>2021-01-14 15:09:06 -0800
commitc22b0bcb1dd024cb9caad9230e3a387d8b061df5 (patch)
treef35a8b91116cb256acdcdd85939c6f06dc967bb9 /lib/mpi/mpi-internal.h
parentafc76b8b80112189b6f11e67e19cf58301944814 (diff)
riscv: Add kprobes supported
This patch enables "kprobe & kretprobe" to work with ftrace interface. It utilized software breakpoint as single-step mechanism. Some instructions which can't be single-step executed must be simulated in kernel execution slot, such as: branch, jal, auipc, la ... Some instructions should be rejected for probing and we use a blacklist to filter, such as: ecall, ebreak, ... We use ebreak & c.ebreak to replace origin instruction and the kprobe handler prepares an executable memory slot for out-of-line execution with a copy of the original instruction being probed. In execution slot we add ebreak behind original instruction to simulate a single-setp mechanism. The patch is based on packi's work [1] and csky's work [2]. - The kprobes_trampoline.S is all from packi's patch - The single-step mechanism is new designed for riscv without hw single-step trap - The simulation codes are from csky - Frankly, all codes refer to other archs' implementation [1] https://lore.kernel.org/linux-riscv/[email protected]/ [2] https://lore.kernel.org/linux-csky/[email protected]/ Signed-off-by: Guo Ren <[email protected]> Co-developed-by: Patrick Stählin <[email protected]> Signed-off-by: Patrick Stählin <[email protected]> Acked-by: Masami Hiramatsu <[email protected]> Tested-by: Zong Li <[email protected]> Reviewed-by: Pekka Enberg <[email protected]> Cc: Patrick Stählin <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Björn Töpel <[email protected]> Signed-off-by: Palmer Dabbelt <[email protected]>
Diffstat (limited to 'lib/mpi/mpi-internal.h')
0 files changed, 0 insertions, 0 deletions