pKVM need its own memcpy library, it cannot directly use arch/x86/lib/memcpy_64.S as it's based on ALTERNATIVE section which pKVM does not support yet. Signed-off-by: Jason Chen CJ <jason.cj.chen@xxxxxxxxx> --- arch/x86/kvm/vmx/pkvm/hyp/Makefile | 1 + arch/x86/kvm/vmx/pkvm/hyp/lib/memcpy_64.S | 26 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/arch/x86/kvm/vmx/pkvm/hyp/Makefile b/arch/x86/kvm/vmx/pkvm/hyp/Makefile index fe852bd43a7e..9c410ec96f45 100644 --- a/arch/x86/kvm/vmx/pkvm/hyp/Makefile +++ b/arch/x86/kvm/vmx/pkvm/hyp/Makefile @@ -17,6 +17,7 @@ pkvm-hyp-y := vmx_asm.o vmexit.o memory.o early_alloc.o pgtable.o mmu.o pkvm.o \ ifndef CONFIG_PKVM_INTEL_DEBUG lib-dir := lib pkvm-hyp-y += $(lib-dir)/memset_64.o +pkvm-hyp-y += $(lib-dir)/memcpy_64.o pkvm-hyp-$(CONFIG_RETPOLINE) += $(lib-dir)/retpoline.o pkvm-hyp-$(CONFIG_DEBUG_LIST) += $(lib-dir)/list_debug.o endif diff --git a/arch/x86/kvm/vmx/pkvm/hyp/lib/memcpy_64.S b/arch/x86/kvm/vmx/pkvm/hyp/lib/memcpy_64.S new file mode 100644 index 000000000000..b976f646d352 --- /dev/null +++ b/arch/x86/kvm/vmx/pkvm/hyp/lib/memcpy_64.S @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright 2002 Andi Kleen */ + +#include <linux/linkage.h> + +/* + * memcpy - Copy a memory block. + * + * Input: + * rdi destination + * rsi source + * rdx count + * + * Output: + * rax original destination + * + * This is enhanced fast string memcpy. It is faster and + * simpler than old memcpy. + */ + +SYM_FUNC_START(memcpy) + movq %rdi, %rax + movq %rdx, %rcx + rep movsb + RET +SYM_FUNC_END(memcpy) -- 2.25.1