[lkml]   [2013]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v6 0/7] Optimize jump label implementation for ARM64
This patchset tries to optimize arch specfic jump label implementation
for ARM64 by dynamic kernel text patching.

To enable this feature, your toolchain must support "asm goto" extension
and "%c" constraint extesion. Current GCC for AARCH64 doesn't support
"%c", and there's a patch for it now:

It has been tested on ARM Fast mode and a real hardware platform.

Any comments are welcomed!

1) optimize stop_machine() related code
2) simplify aarch64_insn_patch_text_nosync() interface
3) refine comments

1) rework the stop_machine() related code
2) rework aarch64_insn_gen_nop()

1) resolve a race condition in kernel text patching
2) address other review comments

1) fix a bug in comparing signed and unsigned values
2) detect big endian by checking __AARCH64EB__

V1->V2: address review comments of V1
1) refine comments
2) add a new interface to always synchronize with stop_machine()
when patching code
3) handle endian issue when patching code

Jiang Liu (7):
arm64: introduce basic aarch64 instruction decoding helpers
arm64: introduce interfaces to hotpatch kernel and module code
arm64: move encode_insn_immediate() from module.c to insn.c
arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions
arm64, jump label: detect %c support for ARM64
arm64, jump label: optimize jump label implementation
jump_label: use defined macros instead of hard-coding for better

arch/arm64/Kconfig | 1 +
arch/arm64/include/asm/insn.h | 108 +++++++++++++
arch/arm64/include/asm/jump_label.h | 51 ++++++
arch/arm64/kernel/Makefile | 3 +-
arch/arm64/kernel/insn.c | 302 ++++++++++++++++++++++++++++++++++++
arch/arm64/kernel/jump_label.c | 59 +++++++
arch/arm64/kernel/module.c | 157 ++++++-------------
include/linux/jump_label.h | 15 +-
scripts/ | 2 +-
9 files changed, 581 insertions(+), 117 deletions(-)
create mode 100644 arch/arm64/include/asm/insn.h
create mode 100644 arch/arm64/include/asm/jump_label.h
create mode 100644 arch/arm64/kernel/insn.c
create mode 100644 arch/arm64/kernel/jump_label.c


 \ /
  Last update: 2013-12-10 17:21    [W:0.195 / U:0.620 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site