From: Catalin Marinas Date: Thu, 14 Nov 2024 12:07:28 +0000 (+0000) Subject: Merge branch 'for-next/mops' into for-next/core X-Git-Tag: v6.13-rc1~203^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=437330d90c507be109a161667a77eaf61be0edac;p=thirdparty%2Fkernel%2Flinux.git Merge branch 'for-next/mops' into for-next/core * for-next/mops: : More FEAT_MOPS (memcpy instructions) uses - in-kernel routines arm64: mops: Document requirements for hypervisors arm64: lib: Use MOPS for copy_page() and clear_page() arm64: lib: Use MOPS for memcpy() routines arm64: mops: Document booting requirement for HCR_EL2.MCE2 arm64: mops: Handle MOPS exceptions from EL1 arm64: probes: Disable kprobes/uprobes on MOPS instructions # Conflicts: # arch/arm64/kernel/entry-common.c --- 437330d90c507be109a161667a77eaf61be0edac diff --cc arch/arm64/kernel/entry-common.c index fe74813009bd4,9d174cd541ef2..b260ddc4d3e9a --- a/arch/arm64/kernel/entry-common.c +++ b/arch/arm64/kernel/entry-common.c @@@ -463,15 -463,15 +463,24 @@@ static void noinstr el1_bti(struct pt_r exit_to_kernel_mode(regs); } +static void noinstr el1_gcs(struct pt_regs *regs, unsigned long esr) +{ + enter_from_kernel_mode(regs); + local_daif_inherit(regs); + do_el1_gcs(regs, esr); + local_daif_mask(); + exit_to_kernel_mode(regs); +} + + static void noinstr el1_mops(struct pt_regs *regs, unsigned long esr) + { + enter_from_kernel_mode(regs); + local_daif_inherit(regs); + do_el1_mops(regs, esr); + local_daif_mask(); + exit_to_kernel_mode(regs); + } + static void noinstr el1_dbg(struct pt_regs *regs, unsigned long esr) { unsigned long far = read_sysreg(far_el1); @@@ -514,9 -514,9 +523,12 @@@ asmlinkage void noinstr el1h_64_sync_ha case ESR_ELx_EC_BTI: el1_bti(regs, esr); break; + case ESR_ELx_EC_GCS: + el1_gcs(regs, esr); + break; + case ESR_ELx_EC_MOPS: + el1_mops(regs, esr); + break; case ESR_ELx_EC_BREAKPT_CUR: case ESR_ELx_EC_SOFTSTP_CUR: case ESR_ELx_EC_WATCHPT_CUR: