Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751865Ab3JQG2Y (ORCPT ); Thu, 17 Oct 2013 02:28:24 -0400 Received: from mail-pa0-f50.google.com ([209.85.220.50]:48052 "EHLO mail-pa0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751099Ab3JQG2X (ORCPT ); Thu, 17 Oct 2013 02:28:23 -0400 From: Jiang Liu To: Steven Rostedt , Catalin Marinas , Will Deacon , Sandeepa Prabhu Cc: Jiang Liu , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 0/7] Optimize jump label implementation for ARM64 Date: Thu, 17 Oct 2013 14:19:33 +0800 Message-Id: <1381990781-27814-1-git-send-email-liuj97@gmail.com> X-Mailer: git-send-email 1.8.1.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2464 Lines: 63 From: Jiang Liu 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", so you need a GCC patch similiar to this: http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/arm/arm.c?view=patch&r1=175293&r2=175565&pathrev=175565 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48637 It has been tested on ARM Fast mode and a real hardware platform. Any comments are welcomed! V3->V4: 1) resolve a race condition in kernel text patching 2) address other review comments V2->V3: 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 readability arch/arm64/Kconfig | 1 + arch/arm64/include/asm/insn.h | 110 +++++++++++++++++ arch/arm64/include/asm/jump_label.h | 52 ++++++++ arch/arm64/kernel/Makefile | 3 +- arch/arm64/kernel/insn.c | 235 ++++++++++++++++++++++++++++++++++++ arch/arm64/kernel/jump_label.c | 58 +++++++++ arch/arm64/kernel/module.c | 152 +++++++---------------- include/linux/jump_label.h | 15 ++- scripts/gcc-goto.sh | 2 +- 9 files changed, 514 insertions(+), 114 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 -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/