Skip to content

Commit 0546d4a

Browse files
Fuad Tabbaoupton
authored andcommitted
KVM: arm64: Move pkvm_vcpu_init_traps() to init_pkvm_hyp_vcpu()
Move pkvm_vcpu_init_traps() to the initialization of the hypervisor's vcpu state in init_pkvm_hyp_vcpu(), and remove the associated hypercall. In protected mode, traps need to be initialized whenever a VCPU is initialized anyway, and not only for protected VMs. This also saves an unnecessary hypercall. Signed-off-by: Fuad Tabba <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Oliver Upton <[email protected]>
1 parent 8aaf3f7 commit 0546d4a

File tree

5 files changed

+3
-20
lines changed

5 files changed

+3
-20
lines changed

arch/arm64/include/asm/kvm_asm.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ enum __kvm_host_smccc_func {
7676
__KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff,
7777
__KVM_HOST_SMCCC_FUNC___vgic_v3_save_vmcr_aprs,
7878
__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_vmcr_aprs,
79-
__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_init_traps,
8079
__KVM_HOST_SMCCC_FUNC___pkvm_init_vm,
8180
__KVM_HOST_SMCCC_FUNC___pkvm_init_vcpu,
8281
__KVM_HOST_SMCCC_FUNC___pkvm_teardown_vm,

arch/arm64/kvm/arm.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -856,14 +856,6 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)
856856
static_branch_inc(&userspace_irqchip_in_use);
857857
}
858858

859-
/*
860-
* Initialize traps for protected VMs.
861-
* NOTE: Move to run in EL2 directly, rather than via a hypercall, once
862-
* the code is in place for first run initialization at EL2.
863-
*/
864-
if (kvm_vm_is_protected(kvm))
865-
kvm_call_hyp_nvhe(__pkvm_vcpu_init_traps, vcpu);
866-
867859
mutex_lock(&kvm->arch.config_lock);
868860
set_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags);
869861
mutex_unlock(&kvm->arch.config_lock);

arch/arm64/kvm/hyp/include/nvhe/trap_handler.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,4 @@
1515
#define DECLARE_REG(type, name, ctxt, reg) \
1616
type name = (type)cpu_reg(ctxt, (reg))
1717

18-
void __pkvm_vcpu_init_traps(struct kvm_vcpu *vcpu);
19-
2018
#endif /* __ARM64_KVM_NVHE_TRAP_HANDLER_H__ */

arch/arm64/kvm/hyp/nvhe/hyp-main.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -349,13 +349,6 @@ static void handle___pkvm_prot_finalize(struct kvm_cpu_context *host_ctxt)
349349
cpu_reg(host_ctxt, 1) = __pkvm_prot_finalize();
350350
}
351351

352-
static void handle___pkvm_vcpu_init_traps(struct kvm_cpu_context *host_ctxt)
353-
{
354-
DECLARE_REG(struct kvm_vcpu *, vcpu, host_ctxt, 1);
355-
356-
__pkvm_vcpu_init_traps(kern_hyp_va(vcpu));
357-
}
358-
359352
static void handle___pkvm_init_vm(struct kvm_cpu_context *host_ctxt)
360353
{
361354
DECLARE_REG(struct kvm *, host_kvm, host_ctxt, 1);
@@ -411,7 +404,6 @@ static const hcall_t host_hcall[] = {
411404
HANDLE_FUNC(__kvm_timer_set_cntvoff),
412405
HANDLE_FUNC(__vgic_v3_save_vmcr_aprs),
413406
HANDLE_FUNC(__vgic_v3_restore_vmcr_aprs),
414-
HANDLE_FUNC(__pkvm_vcpu_init_traps),
415407
HANDLE_FUNC(__pkvm_init_vm),
416408
HANDLE_FUNC(__pkvm_init_vcpu),
417409
HANDLE_FUNC(__pkvm_teardown_vm),

arch/arm64/kvm/hyp/nvhe/pkvm.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ static void pvm_init_trap_regs(struct kvm_vcpu *vcpu)
204204
/*
205205
* Initialize trap register values in protected mode.
206206
*/
207-
void __pkvm_vcpu_init_traps(struct kvm_vcpu *vcpu)
207+
static void pkvm_vcpu_init_traps(struct kvm_vcpu *vcpu)
208208
{
209209
pvm_init_trap_regs(vcpu);
210210
pvm_init_traps_aa64pfr0(vcpu);
@@ -335,6 +335,8 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
335335

336336
hyp_vcpu->vcpu.arch.hw_mmu = &hyp_vm->kvm.arch.mmu;
337337
hyp_vcpu->vcpu.arch.cflags = READ_ONCE(host_vcpu->arch.cflags);
338+
339+
pkvm_vcpu_init_traps(&hyp_vcpu->vcpu);
338340
done:
339341
if (ret)
340342
unpin_host_vcpu(host_vcpu);

0 commit comments

Comments
 (0)