2012-12-12 22:52:05 +04:00
/*
* Copyright ( C ) 2012 , 2013 - ARM Ltd
* Author : Marc Zyngier < marc . zyngier @ arm . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
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
* revisions . It is thus safe to return the latest .
*/
if ( test_bit ( KVM_ARM_VCPU_PSCI_0_2 , vcpu - > arch . features ) )
return KVM_ARM_PSCI_LATEST ;
return KVM_ARM_PSCI_0_1 ;
}
2018-02-06 20:56:12 +03:00
int kvm_hvc_call_handler ( struct kvm_vcpu * vcpu ) ;
2012-12-12 22:52:05 +04:00
2018-02-06 20:56:08 +03:00
# endif /* __KVM_ARM_PSCI_H__ */