KVM: arm64: Remove kvm_arch_vm_ioctl_check_extension()
kvm_arch_vm_ioctl_check_extension() is only called from kvm_vm_ioctl_check_extension(), so we can inline it and remove the extra function. Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Marc Zyngier <maz@kernel.org> Cc: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20201118194402.2892-3-will@kernel.org
This commit is contained in:
parent
8d14797b53
commit
36fb4cd55f
|
@ -697,6 +697,11 @@ static inline bool system_supports_generic_auth(void)
|
||||||
cpus_have_const_cap(ARM64_HAS_GENERIC_AUTH);
|
cpus_have_const_cap(ARM64_HAS_GENERIC_AUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool system_has_full_ptr_auth(void)
|
||||||
|
{
|
||||||
|
return system_supports_address_auth() && system_supports_generic_auth();
|
||||||
|
}
|
||||||
|
|
||||||
static __always_inline bool system_uses_irq_prio_masking(void)
|
static __always_inline bool system_uses_irq_prio_masking(void)
|
||||||
{
|
{
|
||||||
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
|
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
|
||||||
|
|
|
@ -58,7 +58,6 @@ int kvm_arm_init_sve(void);
|
||||||
int __attribute_const__ kvm_target_cpu(void);
|
int __attribute_const__ kvm_target_cpu(void);
|
||||||
int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
|
int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
|
||||||
void kvm_arm_vcpu_destroy(struct kvm_vcpu *vcpu);
|
void kvm_arm_vcpu_destroy(struct kvm_vcpu *vcpu);
|
||||||
int kvm_arch_vm_ioctl_check_extension(struct kvm *kvm, long ext);
|
|
||||||
void __extended_idmap_trampoline(phys_addr_t boot_pgd, phys_addr_t idmap_start);
|
void __extended_idmap_trampoline(phys_addr_t boot_pgd, phys_addr_t idmap_start);
|
||||||
|
|
||||||
struct kvm_vmid {
|
struct kvm_vmid {
|
||||||
|
|
|
@ -182,6 +182,8 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
||||||
case KVM_CAP_ARM_IRQ_LINE_LAYOUT_2:
|
case KVM_CAP_ARM_IRQ_LINE_LAYOUT_2:
|
||||||
case KVM_CAP_ARM_NISV_TO_USER:
|
case KVM_CAP_ARM_NISV_TO_USER:
|
||||||
case KVM_CAP_ARM_INJECT_EXT_DABT:
|
case KVM_CAP_ARM_INJECT_EXT_DABT:
|
||||||
|
case KVM_CAP_SET_GUEST_DEBUG:
|
||||||
|
case KVM_CAP_VCPU_ATTRIBUTES:
|
||||||
r = 1;
|
r = 1;
|
||||||
break;
|
break;
|
||||||
case KVM_CAP_ARM_SET_DEVICE_ADDR:
|
case KVM_CAP_ARM_SET_DEVICE_ADDR:
|
||||||
|
@ -213,10 +215,35 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
||||||
case KVM_CAP_STEAL_TIME:
|
case KVM_CAP_STEAL_TIME:
|
||||||
r = kvm_arm_pvtime_supported();
|
r = kvm_arm_pvtime_supported();
|
||||||
break;
|
break;
|
||||||
default:
|
case KVM_CAP_ARM_EL1_32BIT:
|
||||||
r = kvm_arch_vm_ioctl_check_extension(kvm, ext);
|
r = cpus_have_const_cap(ARM64_HAS_32BIT_EL1);
|
||||||
break;
|
break;
|
||||||
|
case KVM_CAP_GUEST_DEBUG_HW_BPS:
|
||||||
|
r = get_num_brps();
|
||||||
|
break;
|
||||||
|
case KVM_CAP_GUEST_DEBUG_HW_WPS:
|
||||||
|
r = get_num_wrps();
|
||||||
|
break;
|
||||||
|
case KVM_CAP_ARM_PMU_V3:
|
||||||
|
r = kvm_arm_support_pmu_v3();
|
||||||
|
break;
|
||||||
|
case KVM_CAP_ARM_INJECT_SERROR_ESR:
|
||||||
|
r = cpus_have_const_cap(ARM64_HAS_RAS_EXTN);
|
||||||
|
break;
|
||||||
|
case KVM_CAP_ARM_VM_IPA_SIZE:
|
||||||
|
r = get_kvm_ipa_limit();
|
||||||
|
break;
|
||||||
|
case KVM_CAP_ARM_SVE:
|
||||||
|
r = system_supports_sve();
|
||||||
|
break;
|
||||||
|
case KVM_CAP_ARM_PTRAUTH_ADDRESS:
|
||||||
|
case KVM_CAP_ARM_PTRAUTH_GENERIC:
|
||||||
|
r = system_has_full_ptr_auth();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
r = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,58 +42,6 @@ static u32 kvm_ipa_limit;
|
||||||
#define VCPU_RESET_PSTATE_SVC (PSR_AA32_MODE_SVC | PSR_AA32_A_BIT | \
|
#define VCPU_RESET_PSTATE_SVC (PSR_AA32_MODE_SVC | PSR_AA32_A_BIT | \
|
||||||
PSR_AA32_I_BIT | PSR_AA32_F_BIT)
|
PSR_AA32_I_BIT | PSR_AA32_F_BIT)
|
||||||
|
|
||||||
static bool system_has_full_ptr_auth(void)
|
|
||||||
{
|
|
||||||
return system_supports_address_auth() && system_supports_generic_auth();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* kvm_arch_vm_ioctl_check_extension
|
|
||||||
*
|
|
||||||
* We currently assume that the number of HW registers is uniform
|
|
||||||
* across all CPUs (see cpuinfo_sanity_check).
|
|
||||||
*/
|
|
||||||
int kvm_arch_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
|
||||||
{
|
|
||||||
int r;
|
|
||||||
|
|
||||||
switch (ext) {
|
|
||||||
case KVM_CAP_ARM_EL1_32BIT:
|
|
||||||
r = cpus_have_const_cap(ARM64_HAS_32BIT_EL1);
|
|
||||||
break;
|
|
||||||
case KVM_CAP_GUEST_DEBUG_HW_BPS:
|
|
||||||
r = get_num_brps();
|
|
||||||
break;
|
|
||||||
case KVM_CAP_GUEST_DEBUG_HW_WPS:
|
|
||||||
r = get_num_wrps();
|
|
||||||
break;
|
|
||||||
case KVM_CAP_ARM_PMU_V3:
|
|
||||||
r = kvm_arm_support_pmu_v3();
|
|
||||||
break;
|
|
||||||
case KVM_CAP_ARM_INJECT_SERROR_ESR:
|
|
||||||
r = cpus_have_const_cap(ARM64_HAS_RAS_EXTN);
|
|
||||||
break;
|
|
||||||
case KVM_CAP_SET_GUEST_DEBUG:
|
|
||||||
case KVM_CAP_VCPU_ATTRIBUTES:
|
|
||||||
r = 1;
|
|
||||||
break;
|
|
||||||
case KVM_CAP_ARM_VM_IPA_SIZE:
|
|
||||||
r = kvm_ipa_limit;
|
|
||||||
break;
|
|
||||||
case KVM_CAP_ARM_SVE:
|
|
||||||
r = system_supports_sve();
|
|
||||||
break;
|
|
||||||
case KVM_CAP_ARM_PTRAUTH_ADDRESS:
|
|
||||||
case KVM_CAP_ARM_PTRAUTH_GENERIC:
|
|
||||||
r = system_has_full_ptr_auth();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
r = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int kvm_sve_max_vl;
|
unsigned int kvm_sve_max_vl;
|
||||||
|
|
||||||
int kvm_arm_init_sve(void)
|
int kvm_arm_init_sve(void)
|
||||||
|
|
Loading…
Reference in New Issue