]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: arm64: Flush hyp bss section after initialization of variables in bss
authorLokesh Vutla <lokeshvutla@google.com>
Tue, 21 Jan 2025 04:40:16 +0000 (04:40 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 21 Jan 2025 08:32:53 +0000 (08:32 +0000)
commit9bcbb6104a344d3526e185ee1e7b985509914e90
tree8abb2600a263f8c21ae71cc518f199d0ab5c4588
parent01009b06a6b52d8439c55b530633a971c13b6cb2
KVM: arm64: Flush hyp bss section after initialization of variables in bss

To determine CPU features during initialization, the nVHE hypervisor
utilizes sanitized values of the host's CPU features registers. These
values, stored in u64 idaa64*_el1_sys_val variables are updated by the
kvm_hyp_init_symbols() function at EL1. To ensure EL2 visibility with
the MMU off, the data cache needs to be flushed after these updates.
However, individually flushing each variable using
kvm_flush_dcache_to_poc() is inefficient.

These cpu feature variables would be part of the bss section of
the hypervisor. Hence, flush the entire bss section of hypervisor
once the initialization is complete.

Fixes: 6c30bfb18d0b ("KVM: arm64: Add handlers for protected VM System Registers")
Suggested-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@google.com>
Link: https://lore.kernel.org/r/20250121044016.2219256-1-lokeshvutla@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/arm.c