From a8d5d29e85048ec29761e90c38cde2eda7a5a3dc Mon Sep 17 00:00:00 2001 From: Quentin Perret Date: Fri, 9 Sep 2022 16:31:33 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Move gen-hyprel into a tool directory In order to allow re-use of the gen-hyprel tool to build hypervisor modules in the future, move it up to the arm64 tools folder. Bug: 244543039 Bug: 244373730 Change-Id: I188a2dac1acf4974213499970cc29552807497eb Signed-off-by: Quentin Perret --- arch/arm64/Makefile | 5 +++++ arch/arm64/kvm/hyp/nvhe/.gitignore | 1 - arch/arm64/kvm/hyp/nvhe/Makefile | 7 +++---- arch/arm64/tools/.gitignore | 2 ++ arch/arm64/tools/Makefile | 4 ++++ arch/arm64/{kvm/hyp/nvhe => tools}/gen-hyprel.c | 0 6 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 arch/arm64/tools/.gitignore rename arch/arm64/{kvm/hyp/nvhe => tools}/gen-hyprel.c (100%) diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 4ce6fd353ba4..34691c2cd8f4 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -190,6 +190,11 @@ ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS),y) endif endif +ifeq ($(CONFIG_KVM),y) +archscripts: + $(Q)$(MAKE) $(build)=arch/arm64/tools gen-hyprel +endif + ifeq ($(KBUILD_EXTMOD),) # We need to generate vdso-offsets.h before compiling certain files in kernel/. # In order to do that, we should use the archprepare target, but we can't since diff --git a/arch/arm64/kvm/hyp/nvhe/.gitignore b/arch/arm64/kvm/hyp/nvhe/.gitignore index 5b6c43cc96f8..899547d88045 100644 --- a/arch/arm64/kvm/hyp/nvhe/.gitignore +++ b/arch/arm64/kvm/hyp/nvhe/.gitignore @@ -1,4 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-only -gen-hyprel hyp.lds hyp-reloc.S diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile index 01fd26cff95a..de1f2551acef 100644 --- a/arch/arm64/kvm/hyp/nvhe/Makefile +++ b/arch/arm64/kvm/hyp/nvhe/Makefile @@ -14,8 +14,7 @@ ccflags-y += -fno-stack-protector \ -DDISABLE_BRANCH_PROFILING \ $(DISABLE_STACKLEAK_PLUGIN) -hostprogs := gen-hyprel -HOST_EXTRACFLAGS += -I$(objtree)/include +HYPREL := arch/arm64/tools/gen-hyprel lib-objs := clear_page.o copy_page.o memcpy.o memset.o lib-objs := $(addprefix ../../../lib/, $(lib-objs)) @@ -66,7 +65,7 @@ $(obj)/kvm_nvhe.tmp.o: $(obj)/hyp.lds $(addprefix $(obj)/,$(hyp-obj)) FORCE # runtime. Because the hypervisor is part of the kernel binary, relocations # produce a kernel VA. We enumerate relocations targeting hyp at build time # and convert the kernel VAs at those positions to hyp VAs. -$(obj)/hyp-reloc.S: $(obj)/kvm_nvhe.tmp.o $(obj)/gen-hyprel FORCE +$(obj)/hyp-reloc.S: $(obj)/kvm_nvhe.tmp.o FORCE $(call if_changed,hyprel) # 5) Compile hyp-reloc.S and link it into the existing partially linked object. @@ -85,7 +84,7 @@ $(obj)/kvm_nvhe.o: $(obj)/kvm_nvhe.rel.o FORCE # The HYPREL command calls `gen-hyprel` to generate an assembly file with # a list of relocations targeting hyp code/data. quiet_cmd_hyprel = HYPREL $@ - cmd_hyprel = $(obj)/gen-hyprel $< > $@ + cmd_hyprel = $(HYPREL) $< > $@ # The HYPCOPY command uses `objcopy` to prefix all ELF symbol names # to avoid clashes with VHE code/data. diff --git a/arch/arm64/tools/.gitignore b/arch/arm64/tools/.gitignore new file mode 100644 index 000000000000..1ddedddfffbe --- /dev/null +++ b/arch/arm64/tools/.gitignore @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +gen-hyprel diff --git a/arch/arm64/tools/Makefile b/arch/arm64/tools/Makefile index 07a93ab21a62..3b604506343e 100644 --- a/arch/arm64/tools/Makefile +++ b/arch/arm64/tools/Makefile @@ -22,3 +22,7 @@ $(kapi)/cpucaps.h: $(src)/gen-cpucaps.awk $(src)/cpucaps FORCE $(kapi)/sysreg-defs.h: $(src)/gen-sysreg.awk $(src)/sysreg FORCE $(call if_changed,gen_sysreg) + +HOST_EXTRACFLAGS += -I$(objtree)/include +hostprogs += gen-hyprel +gen-hyprel: $(obj)/gen-hyprel diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c b/arch/arm64/tools/gen-hyprel.c similarity index 100% rename from arch/arm64/kvm/hyp/nvhe/gen-hyprel.c rename to arch/arm64/tools/gen-hyprel.c