Skip to content

Commit a78738e

Browse files
author
Marc Zyngier
committed
KVM: arm64: Turn __KVM_HOST_SMCCC_FUNC_* into an enum (mostly)
__KVM_HOST_SMCCC_FUNC_* is a royal pain, as there is a fair amount of churn around these #defines, and we avoid making it an enum only for the sake of the early init, low level code that requires __KVM_HOST_SMCCC_FUNC___kvm_hyp_init to be usable from assembly. Let's be brave and turn everything but this symbol into an enum, using a bit of arithmetic to avoid any overlap. Acked-by: Will Deacon <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Marc Zyngier <[email protected]> Signed-off-by: Will Deacon <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 9e1ff30 commit a78738e

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

arch/arm64/include/asm/kvm_asm.h

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,31 +44,35 @@
4444
#define KVM_HOST_SMCCC_FUNC(name) KVM_HOST_SMCCC_ID(__KVM_HOST_SMCCC_FUNC_##name)
4545

4646
#define __KVM_HOST_SMCCC_FUNC___kvm_hyp_init 0
47-
#define __KVM_HOST_SMCCC_FUNC___kvm_vcpu_run 1
48-
#define __KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context 2
49-
#define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa 3
50-
#define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid 4
51-
#define __KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context 5
52-
#define __KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff 6
53-
#define __KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs 7
54-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_get_gic_config 8
55-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_read_vmcr 9
56-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_write_vmcr 10
57-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_init_lrs 11
58-
#define __KVM_HOST_SMCCC_FUNC___kvm_get_mdcr_el2 12
59-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_save_aprs 13
60-
#define __KVM_HOST_SMCCC_FUNC___vgic_v3_restore_aprs 14
61-
#define __KVM_HOST_SMCCC_FUNC___pkvm_init 15
62-
#define __KVM_HOST_SMCCC_FUNC___pkvm_host_share_hyp 16
63-
#define __KVM_HOST_SMCCC_FUNC___pkvm_create_private_mapping 17
64-
#define __KVM_HOST_SMCCC_FUNC___pkvm_cpu_set_vector 18
65-
#define __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize 19
66-
#define __KVM_HOST_SMCCC_FUNC___kvm_adjust_pc 20
6747

6848
#ifndef __ASSEMBLY__
6949

7050
#include <linux/mm.h>
7151

52+
enum __kvm_host_smccc_func {
53+
/* __KVM_HOST_SMCCC_FUNC___kvm_hyp_init */
54+
__KVM_HOST_SMCCC_FUNC___kvm_vcpu_run = __KVM_HOST_SMCCC_FUNC___kvm_hyp_init + 1,
55+
__KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context,
56+
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
57+
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
58+
__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
59+
__KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff,
60+
__KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs,
61+
__KVM_HOST_SMCCC_FUNC___vgic_v3_get_gic_config,
62+
__KVM_HOST_SMCCC_FUNC___vgic_v3_read_vmcr,
63+
__KVM_HOST_SMCCC_FUNC___vgic_v3_write_vmcr,
64+
__KVM_HOST_SMCCC_FUNC___vgic_v3_init_lrs,
65+
__KVM_HOST_SMCCC_FUNC___kvm_get_mdcr_el2,
66+
__KVM_HOST_SMCCC_FUNC___vgic_v3_save_aprs,
67+
__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_aprs,
68+
__KVM_HOST_SMCCC_FUNC___pkvm_init,
69+
__KVM_HOST_SMCCC_FUNC___pkvm_host_share_hyp,
70+
__KVM_HOST_SMCCC_FUNC___pkvm_create_private_mapping,
71+
__KVM_HOST_SMCCC_FUNC___pkvm_cpu_set_vector,
72+
__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize,
73+
__KVM_HOST_SMCCC_FUNC___kvm_adjust_pc,
74+
};
75+
7276
#define DECLARE_KVM_VHE_SYM(sym) extern char sym[]
7377
#define DECLARE_KVM_NVHE_SYM(sym) extern char kvm_nvhe_sym(sym)[]
7478

0 commit comments

Comments
 (0)