summaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/insn.h
diff options
context:
space:
mode:
authorWill Deacon2018-06-19 18:55:28 +0200
committerWill Deacon2018-07-05 18:24:48 +0200
commit693350a7998018391852c48f68956cf0f855b2b9 (patch)
tree7ee50d03fc3ee13994ac7a4d18a8a7af1a8189f6 /arch/arm64/include/asm/insn.h
parentarm64: IPI each CPU after invalidating the I-cache for kernel mappings (diff)
downloadkernel-qcow2-linux-693350a7998018391852c48f68956cf0f855b2b9.tar.gz
kernel-qcow2-linux-693350a7998018391852c48f68956cf0f855b2b9.tar.xz
kernel-qcow2-linux-693350a7998018391852c48f68956cf0f855b2b9.zip
arm64: insn: Don't fallback on nosync path for general insn patching
Patching kernel instructions at runtime requires other CPUs to undergo a context synchronisation event via an explicit ISB or an IPI in order to ensure that the new instructions are visible. This is required even for "hotpatch" instructions such as NOP and BL, so avoid optimising in this case and always go via stop_machine() when performing general patching. ftrace isn't quite as strict, so it can continue to call the nosync code directly. Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/insn.h')
-rw-r--r--arch/arm64/include/asm/insn.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/arm64/include/asm/insn.h b/arch/arm64/include/asm/insn.h
index f62c56b1793f..c6802dea6cab 100644
--- a/arch/arm64/include/asm/insn.h
+++ b/arch/arm64/include/asm/insn.h
@@ -446,8 +446,6 @@ u32 aarch64_insn_gen_prefetch(enum aarch64_insn_register base,
s32 aarch64_get_branch_offset(u32 insn);
u32 aarch64_set_branch_offset(u32 insn, s32 offset);
-bool aarch64_insn_hotpatch_safe(u32 old_insn, u32 new_insn);
-
int aarch64_insn_patch_text_nosync(void *addr, u32 insn);
int aarch64_insn_patch_text(void *addrs[], u32 insns[], int cnt);