aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kvm
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2020-09-22 21:49:07 +0100
committerMarc Zyngier <maz@kernel.org>2020-09-30 08:37:13 +0100
commitdf4c8214a18d202fa0ec221a001f640e020f7e44 (patch)
tree7f4227456644dd41451490fd45082a4e7f9ab30c /arch/arm64/kvm
parentkvm: arm64: Add helpers for accessing nVHE hyp per-cpu vars (diff)
downloadlinux-dev-df4c8214a18d202fa0ec221a001f640e020f7e44.tar.xz
linux-dev-df4c8214a18d202fa0ec221a001f640e020f7e44.zip
kvm: arm64: Duplicate arm64_ssbd_callback_required for nVHE hyp
Hyp keeps track of which cores require SSBD callback by accessing a kernel-proper global variable. Create an nVHE symbol of the same name and copy the value from kernel proper to nVHE as KVM is being enabled on a core. Done in preparation for separating percpu memory owned by kernel proper and nVHE. Signed-off-by: David Brazdil <dbrazdil@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Acked-by: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20200922204910.7265-8-dbrazdil@google.com
Diffstat (limited to 'arch/arm64/kvm')
-rw-r--r--arch/arm64/kvm/arm.c3
-rw-r--r--arch/arm64/kvm/hyp/nvhe/switch.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 46dc3d75cf13..cbfff390f55f 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -1295,6 +1295,9 @@ static void cpu_init_hyp_mode(void)
arm64_get_ssbd_state() == ARM64_SSBD_FORCE_DISABLE) {
kvm_call_hyp_nvhe(__kvm_enable_ssbs);
}
+
+ /* Copy information whether SSBD callback is required to hyp. */
+ hyp_init_aux_data();
}
static void cpu_hyp_reset(void)
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
index cc4f8e790fb3..4662df6330d7 100644
--- a/arch/arm64/kvm/hyp/nvhe/switch.c
+++ b/arch/arm64/kvm/hyp/nvhe/switch.c
@@ -27,6 +27,9 @@
#include <asm/processor.h>
#include <asm/thread_info.h>
+/* Non-VHE copy of the kernel symbol. */
+DEFINE_PER_CPU_READ_MOSTLY(u64, arm64_ssbd_callback_required);
+
static void __activate_traps(struct kvm_vcpu *vcpu)
{
u64 val;