On Thu, Nov 28, 2019 at 08:58:05PM +0100, Sebastian Andrzej Siewior wrote: > @@ -408,6 +410,8 @@ static void __init hyp_mode_check(void) > "CPU: CPUs started in inconsistent modes"); > else > pr_info("CPU: All CPU(s) started at EL1\n"); > + if (IS_ENABLED(CONFIG_KVM_ARM_HOST)) > + kvm_compute_layout(); > } It looks like we call this unconditionally here even if the kernel was booted at EL1. > void __init smp_cpus_done(unsigned int max_cpus) > diff --git a/arch/arm64/kvm/va_layout.c b/arch/arm64/kvm/va_layout.c > index 2cf7d4b606c38..dab1fea4752aa 100644 > --- a/arch/arm64/kvm/va_layout.c > +++ b/arch/arm64/kvm/va_layout.c > @@ -22,7 +22,7 @@ static u8 tag_lsb; > static u64 tag_val; > static u64 va_mask; > > -static void compute_layout(void) > +__init void kvm_compute_layout(void) > { > phys_addr_t idmap_addr = __pa_symbol(__hyp_idmap_text_start); > u64 hyp_va_msb; > @@ -110,9 +110,6 @@ void __init kvm_update_va_mask(struct alt_instr *alt, > > BUG_ON(nr_inst != 5); > > - if (!has_vhe() && !va_mask) > - compute_layout(); > - > for (i = 0; i < nr_inst; i++) { > u32 rd, rn, insn, oinsn; > > @@ -156,9 +153,6 @@ void kvm_patch_vector_branch(struct alt_instr *alt, > return; > } > > - if (!va_mask) > - compute_layout(); And here we had a few more checks. Maybe it's still correct but asking anyway. -- Catalin _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm