diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 682cac9daa65..4e29800c6b33 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -2450,6 +2450,12 @@ static void kvm_hyp_init_symbols(void) kvm_nvhe_sym(__icache_flags) = __icache_flags; kvm_nvhe_sym(kvm_arm_vmid_bits) = kvm_arm_vmid_bits; kvm_nvhe_sym(smccc_trng_available) = smccc_trng_available; + + /* + * Flush entire BSS since part of its data is read while the MMU is off. + */ + kvm_flush_dcache_to_poc(kvm_ksym_ref(__hyp_bss_start), + kvm_ksym_ref(__hyp_bss_end) - kvm_ksym_ref(__hyp_bss_start)); } static unsigned long kvm_hyp_shrinker_count(struct shrinker *shrinker,