OSDN Git Service

arm/arm64: KVM: Turn kvm_psci_version into a static inline
[android-x86/kernel.git] / include / kvm / arm_psci.h
index ed1dd80..e518e4e 100644 (file)
@@ -18,6 +18,7 @@
 #ifndef __KVM_ARM_PSCI_H__
 #define __KVM_ARM_PSCI_H__
 
+#include <linux/kvm_host.h>
 #include <uapi/linux/psci.h>
 
 #define KVM_ARM_PSCI_0_1       PSCI_VERSION(0, 1)
 
 #define KVM_ARM_PSCI_LATEST    KVM_ARM_PSCI_1_0
 
-int kvm_psci_version(struct kvm_vcpu *vcpu);
+/*
+ * 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;
+}
+
+
 int kvm_hvc_call_handler(struct kvm_vcpu *vcpu);
 
 #endif /* __KVM_ARM_PSCI_H__ */