Hey Marc, On Tue, Sep 06, 2022 at 11:00:09AM +0100, Marc Zyngier wrote: [...] > This fails to build on -rc4: > > MODPOST vmlinux.symvers > MODINFO modules.builtin.modinfo > GEN modules.builtin > CC .vmlinux.export.o > LD .tmp_vmlinux.kallsyms1 > ld: Unexpected GOT/PLT entries detected! > ld: Unexpected run-time procedure linkages detected! > ld: ID map text too big or misaligned > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_walk': > (.hyp.text+0xdc0c): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xdc1c): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_get_leaf': > (.hyp.text+0xdc80): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xdc90): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_hyp_map': > (.hyp.text+0xddb0): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xddc0): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_hyp_unmap': > (.hyp.text+0xde44): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xde50): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_hyp_destroy': > (.hyp.text+0xdf40): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xdf50): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_stage2_map': > (.hyp.text+0xe16c): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xe17c): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_stage2_set_owner': > (.hyp.text+0xe264): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xe274): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_stage2_unmap': > (.hyp.text+0xe2d4): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xe2e4): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_stage2_flush': > (.hyp.text+0xe5b4): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xe5c4): undefined reference to `__kvm_nvhe___rcu_read_unlock' > ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function `__kvm_nvhe_kvm_pgtable_stage2_destroy': > (.hyp.text+0xe6f0): undefined reference to `__kvm_nvhe___rcu_read_lock' > ld: (.hyp.text+0xe700): undefined reference to `__kvm_nvhe___rcu_read_unlock' > make[3]: *** [Makefile:1169: vmlinux] Error 1 > make[2]: *** [debian/rules:7: build-arch] Error 2 > > as this drags the RCU read-lock into EL2, and that's not going to > work... The following fixes it, but I wonder how you tested it. Ugh. I was carrying a patch on top of my series to handle compilation issues with rseq_test, I managed to squash the equivalent of below in that patch. Nonetheless, I *did* actually test it to get the numbers above :) -- Thanks, Oliver > diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h > index dc839db86a1a..adf170122daf 100644 > --- a/arch/arm64/include/asm/kvm_pgtable.h > +++ b/arch/arm64/include/asm/kvm_pgtable.h > @@ -580,7 +580,7 @@ enum kvm_pgtable_prot kvm_pgtable_stage2_pte_prot(kvm_pte_t pte); > */ > enum kvm_pgtable_prot kvm_pgtable_hyp_pte_prot(kvm_pte_t pte); > > -#if defined(__KVM_NVHE_HYPERVISOR___) > +#if defined(__KVM_NVHE_HYPERVISOR__) > > static inline void kvm_pgtable_walk_begin(void) {} > static inline void kvm_pgtable_walk_end(void) {} > > -- > Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm