On Fri, Mar 18, 2016 at 05:25:59PM +0000, Marc Zyngier wrote: > When running with VHE, there is no need to translate kernel pointers > to the EL2 memory space, since we're already there (and we have a much > saner memory map to start with). > > Unfortunately, kvm_ksym_ref is getting in the way, and the first > call into the "hypervisor" section is going to end up in fireworks, > since we're now branching into nowhereland. Meh. > > A potential solution is to test if VHE is engaged or not, and only > perform the translation in the negative case. With this in place, > VHE is able to run again. > > Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> > --- > arch/arm64/include/asm/kvm_asm.h | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h > index 226f49d..282f907 100644 > --- a/arch/arm64/include/asm/kvm_asm.h > +++ b/arch/arm64/include/asm/kvm_asm.h > @@ -26,7 +26,13 @@ > #define KVM_ARM64_DEBUG_DIRTY_SHIFT 0 > #define KVM_ARM64_DEBUG_DIRTY (1 << KVM_ARM64_DEBUG_DIRTY_SHIFT) > > -#define kvm_ksym_ref(sym) phys_to_virt((u64)&sym - kimage_voffset) > +#define kvm_ksym_ref(sym) \ > + ({ \ > + void *val = sym; \ Should we not use &sym, for consistency and just in case we ever pass something other than a function. > + if (!is_kernel_in_hyp_mode()) \ > + val = phys_to_virt((u64)&sym - kimage_voffset); \ > + val; \ > + }) Otherwise: Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html