Hi, On Tue, Jan 05, 2021 at 06:05:37PM +0000, David Brazdil wrote: > Add a post-processing step to compilation of KVM nVHE hyp code which > calls a custom host tool (gen-hyprel) on the partially linked object > file (hyp sections' names prefixed). > > The tool lists all R_AARCH64_ABS64 data relocations targeting hyp > sections and generates an assembly file that will form a new section > .hyp.reloc in the kernel binary. The new section contains an array of > 32-bit offsets to the positions targeted by these relocations. > > Since these addresses of those positions will not be determined until > linking of `vmlinux`, each 32-bit entry carries a R_AARCH64_PREL32 > relocation with addend <section_base_sym> + <r_offset>. The linker of > `vmlinux` will therefore fill the slot accordingly. > > This relocation data will be used at runtime to convert the kernel VAs > at those positions to hyp VAs. > > Signed-off-by: David Brazdil <dbrazdil@xxxxxxxxxx> This patch results in the following error for me. error: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.tmp.o: assertion elf.ehdr->e_ident[5] == 1 failed (lhs=2, rhs=1, line=250) The problem is seen when trying to build aarch64 images in big endian mode. Te script used to reproduce the problem as well as bisect results are attached. Guenter --- Script used to reproduce the problem: make-arm64 allmodconfig echo "CONFIG_CPU_BIG_ENDIAN=y" >> .config make-arm64 olddefconfig rm -f arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o make-arm64 -j arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o where make-arm64 is: make -j32 ARCH=arm64 CROSS_COMPILE=aarch64-linux- $* --- # bad: [b01f250d83f6c3af5c77699dd14e7b48ee0b5383] Add linux-next specific files for 20210129 # good: [6ee1d745b7c9fd573fba142a2efdad76a9f1cb04] Linux 5.11-rc5 git bisect start 'HEAD' 'v5.11-rc5' # good: [7b7f6e418b7121fd3f05029f843ff1eb76e4cc4d] Merge remote-tracking branch 'crypto/master' git bisect good 7b7f6e418b7121fd3f05029f843ff1eb76e4cc4d # good: [4a8b64f4e85b5f2d8e68641ce26af8cf9d9a66af] Merge remote-tracking branch 'keys/keys-next' git bisect good 4a8b64f4e85b5f2d8e68641ce26af8cf9d9a66af # bad: [79a914d7f707c1aa5ede7ce38588b32093b2abbe] Merge remote-tracking branch 'thunderbolt/next' git bisect bad 79a914d7f707c1aa5ede7ce38588b32093b2abbe # good: [f22712067d6f3d1884186509a942da26d2d52166] Merge remote-tracking branch 'rcu/rcu/next' git bisect good f22712067d6f3d1884186509a942da26d2d52166 # bad: [4a42e6b0a53bcc4b58a35b8d5df50581e94b1daa] Merge remote-tracking branch 'usb/usb-next' git bisect bad 4a42e6b0a53bcc4b58a35b8d5df50581e94b1daa # good: [1a9e38cabd80356ffb98c2c88fec528ea9644fd5] usb: dwc2: Make "trimming xfer length" a debug message git bisect good 1a9e38cabd80356ffb98c2c88fec528ea9644fd5 # bad: [589e25c6dfdd535e8eba052f7314054f6d75be4a] Merge remote-tracking branch 'drivers-x86/for-next' git bisect bad 589e25c6dfdd535e8eba052f7314054f6d75be4a # bad: [08c11d16ca91e770de81e5959e22eb34541f8af9] Merge remote-tracking branch 'percpu/for-next' git bisect bad 08c11d16ca91e770de81e5959e22eb34541f8af9 # bad: [cc6d8fa3667aa5513dc2bbca896a4c287aa956f3] Merge branch 'kvm-arm64/misc-5.12' into kvmarm-master/next git bisect bad cc6d8fa3667aa5513dc2bbca896a4c287aa956f3 # bad: [247bc166e6b3b1e4068f120f55582a3aa210cc2d] KVM: arm64: Remove hyp_symbol_addr git bisect bad 247bc166e6b3b1e4068f120f55582a3aa210cc2d # bad: [8c49b5d43d4c45ca0bb0d1faa23feef2e76e89fa] KVM: arm64: Generate hyp relocation data git bisect bad 8c49b5d43d4c45ca0bb0d1faa23feef2e76e89fa # good: [16174eea2e4fe8247e04c17da682f2034fec0369] KVM: arm64: Set up .hyp.rodata ELF section git bisect good 16174eea2e4fe8247e04c17da682f2034fec0369 # good: [f7a4825d9569593b9a81f0768313b86175691ef1] KVM: arm64: Add symbol at the beginning of each hyp section git bisect good f7a4825d9569593b9a81f0768313b86175691ef1 # first bad commit: [8c49b5d43d4c45ca0bb0d1faa23feef2e76e89fa] KVM: arm64: Generate hyp relocation data _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm