From: David Brazdil <dbrazdil@google.com>
To: kvmarm@lists.cs.columbia.edu
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
James Morse <james.morse@arm.com>,
Julien Thierry <julien.thierry.kdev@gmail.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>,
Christoph Lameter <cl@linux.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, kernel-team@android.com,
David Brazdil <dbrazdil@google.com>
Subject: [PATCH v3 07/11] kvm: arm64: Duplicate arm64_ssbd_callback_required for nVHE hyp
Date: Wed, 16 Sep 2020 18:34:35 +0100 [thread overview]
Message-ID: <20200916173439.32265-8-dbrazdil@google.com> (raw)
In-Reply-To: <20200916173439.32265-1-dbrazdil@google.com>
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 at KVM init time.
Done in preparation for separating percpu memory owned by kernel
proper and nVHE.
Signed-off-by: David Brazdil <dbrazdil@google.com>
---
arch/arm64/include/asm/kvm_mmu.h | 10 +++++++---
arch/arm64/kernel/image-vars.h | 1 -
arch/arm64/kvm/arm.c | 2 +-
arch/arm64/kvm/hyp/nvhe/switch.c | 3 +++
4 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
index 189839c3706a..9db93da35606 100644
--- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -529,23 +529,27 @@ static inline int kvm_map_vectors(void)
#ifdef CONFIG_ARM64_SSBD
DECLARE_PER_CPU_READ_MOSTLY(u64, arm64_ssbd_callback_required);
+DECLARE_KVM_NVHE_PER_CPU(u64, arm64_ssbd_callback_required);
-static inline int hyp_map_aux_data(void)
+static inline int hyp_init_aux_data(void)
{
int cpu, err;
for_each_possible_cpu(cpu) {
u64 *ptr;
- ptr = per_cpu_ptr(&arm64_ssbd_callback_required, cpu);
+ ptr = per_cpu_ptr_nvhe(arm64_ssbd_callback_required, cpu);
err = create_hyp_mappings(ptr, ptr + 1, PAGE_HYP);
if (err)
return err;
+
+ /* Copy value from kernel to hyp. */
+ *ptr = per_cpu(arm64_ssbd_callback_required, cpu);
}
return 0;
}
#else
-static inline int hyp_map_aux_data(void)
+static inline int hyp_init_aux_data(void)
{
return 0;
}
diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h
index 76da2ad1010c..59d12a0b4622 100644
--- a/arch/arm64/kernel/image-vars.h
+++ b/arch/arm64/kernel/image-vars.h
@@ -67,7 +67,6 @@ KVM_NVHE_ALIAS(kvm_patch_vector_branch);
KVM_NVHE_ALIAS(kvm_update_va_mask);
/* Global kernel state accessed by nVHE hyp code. */
-KVM_NVHE_ALIAS(arm64_ssbd_callback_required);
KVM_NVHE_ALIAS(kvm_host_data);
KVM_NVHE_ALIAS(kvm_vgic_global_state);
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index b588c3b5c2f0..3bdc2661d276 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -1552,7 +1552,7 @@ static int init_hyp_mode(void)
}
}
- err = hyp_map_aux_data();
+ err = hyp_init_aux_data();
if (err)
kvm_err("Cannot map host auxiliary data: %d\n", err);
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;
--
2.28.0.618.gf4bc123cb7-goog
next prev parent reply other threads:[~2020-09-16 17:37 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-16 17:34 [PATCH v3 00/10] Independent per-CPU data section for nVHE David Brazdil
2020-09-16 17:34 ` [PATCH v3 01/11] kvm: arm64: Partially link nVHE hyp code, simplify HYPCOPY David Brazdil
2020-09-18 8:51 ` Will Deacon
2020-09-22 17:55 ` David Brazdil
2020-09-16 17:34 ` [PATCH v3 02/11] kvm: arm64: Move nVHE hyp namespace macros to hyp_image.h David Brazdil
2020-09-18 8:52 ` Will Deacon
2020-09-16 17:34 ` [PATCH v3 03/11] kvm: arm64: Only define __kvm_ex_table for CONFIG_KVM David Brazdil
2020-09-18 9:00 ` Will Deacon
2020-09-16 17:34 ` [PATCH v3 04/11] kvm: arm64: Remove __hyp_this_cpu_read David Brazdil
2020-09-18 9:00 ` Will Deacon
2020-09-21 13:43 ` David Brazdil
2020-09-16 17:34 ` [PATCH v3 05/11] kvm: arm64: Remove hyp_adr/ldr_this_cpu David Brazdil
2020-09-18 9:05 ` Will Deacon
2020-09-21 14:53 ` David Brazdil
2020-09-21 17:15 ` Will Deacon
2020-09-16 17:34 ` [PATCH v3 06/11] kvm: arm64: Add helpers for accessing nVHE hyp per-cpu vars David Brazdil
2020-09-18 9:24 ` Will Deacon
2020-09-16 17:34 ` David Brazdil [this message]
2020-09-18 11:59 ` [PATCH v3 07/11] kvm: arm64: Duplicate arm64_ssbd_callback_required for nVHE hyp Will Deacon
2020-09-22 18:07 ` David Brazdil
2020-09-16 17:34 ` [PATCH v3 08/11] kvm: arm64: Create separate instances of kvm_host_data for VHE/nVHE David Brazdil
2020-09-18 11:58 ` Will Deacon
2020-09-16 17:34 ` [PATCH v3 09/11] kvm: arm64: Mark hyp stack pages reserved David Brazdil
2020-09-18 12:00 ` Will Deacon
2020-09-22 18:08 ` David Brazdil
2020-09-16 17:34 ` [PATCH v3 10/11] kvm: arm64: Set up hyp percpu data for nVHE David Brazdil
2020-09-18 12:22 ` Will Deacon
2020-09-22 18:34 ` David Brazdil
2020-09-16 17:34 ` [PATCH v3 11/11] kvm: arm64: Remove unnecessary hyp mappings David Brazdil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200916173439.32265-8-dbrazdil@google.com \
--to=dbrazdil@google.com \
--cc=catalin.marinas@arm.com \
--cc=cl@linux.com \
--cc=dennis@kernel.org \
--cc=james.morse@arm.com \
--cc=julien.thierry.kdev@gmail.com \
--cc=kernel-team@android.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=tj@kernel.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox