2019-06-03 08:44:50 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2012-12-12 22:52:05 +04:00
/*
* Copyright ( C ) 2012 , 2013 - ARM Ltd
* Author : Marc Zyngier < marc . zyngier @ arm . com >
*/
2018-02-06 20:56:08 +03:00
# ifndef __KVM_ARM_PSCI_H__
# define __KVM_ARM_PSCI_H__
2012-12-12 22:52:05 +04:00
2018-02-06 20:56:13 +03:00
# include <linux/kvm_host.h>
2018-02-06 20:56:09 +03: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 20:56:11 +03:00
# define KVM_ARM_PSCI_1_0 PSCI_VERSION(1, 0)
# define KVM_ARM_PSCI_LATEST KVM_ARM_PSCI_1_0
2014-04-29 09:54:16 +04:00
2018-02-06 20:56:13 +03: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 19:42:56 +03:00
* revisions . It is thus safe to return the latest , unless
* userspace has instructed us otherwise .
2018-02-06 20:56:13 +03:00
*/
2018-01-21 19:42:56 +03: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 20:56:13 +03:00
return KVM_ARM_PSCI_LATEST ;
2018-01-21 19:42:56 +03:00
}
2018-02-06 20:56:13 +03:00
return KVM_ARM_PSCI_0_1 ;
}
2019-10-21 18:28:15 +03:00
int kvm_psci_call ( struct kvm_vcpu * vcpu ) ;
2012-12-12 22:52:05 +04:00
2018-01-21 19:42:56 +03: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 20:56:08 +03:00
# endif /* __KVM_ARM_PSCI_H__ */