linux-next/arch/arm
Wang Nan 0dc016dbd8 ARM: kprobes: enable OPTPROBES for ARM 32
This patch introduce kprobeopt for ARM 32.

Limitations:
 - Currently only kernel compiled with ARM ISA is supported.

 - Offset between probe point and optinsn slot must not larger than
   32MiB. Masami Hiramatsu suggests replacing 2 words, it will make
   things complex. Futher patch can make such optimization.

Kprobe opt on ARM is relatively simpler than kprobe opt on x86 because
ARM instruction is always 4 bytes aligned and 4 bytes long. This patch
replace probed instruction by a 'b', branch to trampoline code and then
calls optimized_callback(). optimized_callback() calls opt_pre_handler()
to execute kprobe handler. It also emulate/simulate replaced instruction.

When unregistering kprobe, the deferred manner of unoptimizer may leave
branch instruction before optimizer is called. Different from x86_64,
which only copy the probed insn after optprobe_template_end and
reexecute them, this patch call singlestep to emulate/simulate the insn
directly. Futher patch can optimize this behavior.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Will Deacon <will.deacon@arm.com>
Reviewed-by: Jon Medhurst (Tixy) <tixy@linaro.org>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2015-01-13 16:10:17 +00:00
..
boot ARM: mvebu: Fix pinctrl configuration for Armada 370 DB 2014-12-21 06:01:05 -06:00
common Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
configs Add USB_EHCI_EXYNOS to multi_v7_defconfig 2014-12-30 16:03:53 +01:00
crypto crypto: arm - replace memset by memzero_explicit 2014-12-02 22:55:51 +08:00
firmware
include ARM: kprobes: enable OPTPROBES for ARM 32 2015-01-13 16:10:17 +00:00
kernel ARM: kprobes: enable OPTPROBES for ARM 32 2015-01-13 16:10:17 +00:00
kvm 3.19 changes for KVM: 2014-12-18 16:05:28 -08:00
lib ARM: 8225/1: Add unwinding support for memory copy functions 2014-11-27 16:00:25 +00:00
mach-asm9260 ARM: add mach-asm9260 2014-11-28 15:06:38 +01:00
mach-at91 ARM: SoC cleanups for 3.19 2014-12-09 14:18:35 -08:00
mach-axxia
mach-bcm Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-12-10 08:38:57 -08:00
mach-berlin ARM: berlin: do not select RESET_CONTROLLER 2014-11-18 20:27:53 +01:00
mach-clps711x
mach-cns3xxx
mach-davinci More ACPI and power management updates for 3.19-rc1 2014-12-18 20:28:33 -08:00
mach-dove
mach-ebsa110 ARM: ebsa110: Properly override I/O accessors 2014-11-10 15:15:34 +01:00
mach-efm32
mach-ep93xx arm: ep93xx: add dma_masks for the M2P and M2M DMA controllers 2014-11-28 12:34:08 +01:00
mach-exynos More ACPI and power management updates for 3.19-rc1 2014-12-18 20:28:33 -08:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-imx Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-integrator soc: move SoC driver for the ARM Integrator 2014-11-13 10:32:05 +01:00
mach-iop13xx PCI/MSI: Rename mask/unmask_msi_irq treewide 2014-11-23 13:01:45 +01:00
mach-iop32x
mach-iop33x
mach-ixp4xx ARM: ixp4xx: Properly override I/O accessors 2014-11-10 15:59:20 +01:00
mach-keystone ARM / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM 2014-12-13 00:42:49 +01:00
mach-ks8695
mach-lpc32xx
mach-mediatek ARM: SoC DT updates for 3.19 2014-12-09 14:57:37 -08:00
mach-meson ARM: meson: enable L2 cache 2014-11-18 16:35:01 +01:00
mach-mmp Please consider pulling the clk framework changes toward 3.19. It is 2014-12-20 16:42:36 -08:00
mach-moxart
mach-msm
mach-mv78xx0
mach-mvebu ARM: mvebu: use the cpufreq-dt platform_data for independent clocks 2014-12-04 17:31:32 +01:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1 ARM / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM 2014-12-13 00:42:49 +01:00
mach-omap2 Please consider pulling the clk framework changes toward 3.19. It is 2014-12-20 16:42:36 -08:00
mach-orion5x
mach-picoxcell
mach-prima2
mach-pxa Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-qcom
mach-realview
mach-rockchip ARM: rockchip: add basic smp support for rk3288 2014-11-05 22:18:40 +01:00
mach-rpc
mach-s3c24xx Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-s3c64xx cpuidle: Invert CPUIDLE_FLAG_TIME_VALID logic 2014-11-12 21:17:27 +01:00
mach-s5pv210
mach-sa1100 Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-shmobile Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
mach-socfpga socfpga: hotplug: put cpu1 in wfi 2014-11-20 17:00:32 +01:00
mach-spear
mach-sti
mach-sunxi ARM: sunxi: make sun6i SMP ops static 2014-11-16 11:02:33 +01:00
mach-tegra ACPI and power management updates for 3.19-rc1 2014-12-10 21:17:00 -08:00
mach-u300 Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-ux500
mach-versatile
mach-vexpress ARM: vexpress: Enable regulator framework when MMCI is in use 2014-11-28 21:57:07 +01:00
mach-vt8500
mach-w90x900
mach-zynq ARM: zynq: Remove secondary_startup() declaration from header 2014-12-01 09:32:22 +01:00
mm ARM: SoC/iommu configuration for 3.19 2014-12-16 14:53:01 -08:00
net
nwfpe ARM: drop nwfpe initialisation message from warning to info level 2014-11-21 15:24:54 +00:00
oprofile
plat-iop
plat-omap
plat-orion ACPI and power management updates for 3.19-rc1 2014-12-10 21:17:00 -08:00
plat-pxa
plat-samsung Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
plat-versatile ARM: vexpress: Remove non-DT code 2014-11-28 16:08:16 +01:00
probes ARM: kprobes: enable OPTPROBES for ARM 32 2015-01-13 16:10:17 +00:00
tools
vfp ARM: convert printk(KERN_* to pr_* 2014-11-21 15:24:50 +00:00
xen xen/arm: introduce GNTTABOP_cache_flush 2014-12-04 12:41:54 +00:00
Kconfig ARM: kprobes: enable OPTPROBES for ARM 32 2015-01-13 16:10:17 +00:00
Kconfig-nommu
Kconfig.debug Char/Misc driver patches for 3.19-rc1 2014-12-14 16:43:47 -08:00
Makefile ARM: probes: move all probe code to dedicate directory 2015-01-09 09:36:50 +00:00