2019-06-03 07:44:50 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2012-12-12 18:52:05 +00:00
/*
* Copyright ( C ) 2012 , 2013 - ARM Ltd
* Author : Marc Zyngier < marc . zyngier @ arm . com >
*/
2018-02-06 17:56:08 +00:00
# ifndef __KVM_ARM_PSCI_H__
# define __KVM_ARM_PSCI_H__
2012-12-12 18:52:05 +00:00
2018-02-06 17:56:13 +00:00
# include <linux/kvm_host.h>
2018-02-06 17:56:09 +00:00
# include <uapi/linux/psci.h>
# define KVM_ARM_PSCI_0_1 PSCI_VERSION(0, 1)
# define KVM_ARM_PSCI_0_2 PSCI_VERSION(0, 2)
2018-02-06 17:56:11 +00:00
# define KVM_ARM_PSCI_1_0 PSCI_VERSION(1, 0)
# define KVM_ARM_PSCI_LATEST KVM_ARM_PSCI_1_0
2014-04-29 11:24:16 +05:30
2018-02-06 17:56:13 +00:00
/*
* We need the KVM pointer independently from the vcpu as we can call
* this from HYP , and need to apply kern_hyp_va on it . . .
*/
static inline int kvm_psci_version ( struct kvm_vcpu * vcpu , struct kvm * kvm )
{
/*
* Our PSCI implementation stays the same across versions from
* v0 .2 onward , only adding the few mandatory functions ( such
* as FEATURES with 1.0 ) that are required by newer
2018-01-21 16:42:56 +00:00
* revisions . It is thus safe to return the latest , unless
* userspace has instructed us otherwise .
2018-02-06 17:56:13 +00:00
*/
2018-01-21 16:42:56 +00:00
if ( test_bit ( KVM_ARM_VCPU_PSCI_0_2 , vcpu - > arch . features ) ) {
if ( vcpu - > kvm - > arch . psci_version )
return vcpu - > kvm - > arch . psci_version ;
2018-02-06 17:56:13 +00:00
return KVM_ARM_PSCI_LATEST ;
2018-01-21 16:42:56 +00:00
}
2018-02-06 17:56:13 +00:00
return KVM_ARM_PSCI_0_1 ;
}
2019-10-21 16:28:15 +01:00
int kvm_psci_call ( struct kvm_vcpu * vcpu ) ;
2012-12-12 18:52:05 +00:00
2018-01-21 16:42:56 +00:00
struct kvm_one_reg ;
int kvm_arm_get_fw_num_regs ( struct kvm_vcpu * vcpu ) ;
int kvm_arm_copy_fw_reg_indices ( struct kvm_vcpu * vcpu , u64 __user * uindices ) ;
int kvm_arm_get_fw_reg ( struct kvm_vcpu * vcpu , const struct kvm_one_reg * reg ) ;
int kvm_arm_set_fw_reg ( struct kvm_vcpu * vcpu , const struct kvm_one_reg * reg ) ;
2018-02-06 17:56:08 +00:00
# endif /* __KVM_ARM_PSCI_H__ */