1caab277bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 21a2fb94eSMarc Zyngier /* 31a2fb94eSMarc Zyngier * Copyright (C) 2012,2013 - ARM Ltd 41a2fb94eSMarc Zyngier * Author: Marc Zyngier <marc.zyngier@arm.com> 51a2fb94eSMarc Zyngier */ 61a2fb94eSMarc Zyngier 71a2fb94eSMarc Zyngier #ifndef __KVM_ARM_PSCI_H__ 81a2fb94eSMarc Zyngier #define __KVM_ARM_PSCI_H__ 91a2fb94eSMarc Zyngier 10a4097b35SMarc Zyngier #include <linux/kvm_host.h> 11d0a144f1SMarc Zyngier #include <uapi/linux/psci.h> 12d0a144f1SMarc Zyngier 13d0a144f1SMarc Zyngier #define KVM_ARM_PSCI_0_1 PSCI_VERSION(0, 1) 14d0a144f1SMarc Zyngier #define KVM_ARM_PSCI_0_2 PSCI_VERSION(0, 2) 1558e0b223SMarc Zyngier #define KVM_ARM_PSCI_1_0 PSCI_VERSION(1, 0) 16*512865d8SWill Deacon #define KVM_ARM_PSCI_1_1 PSCI_VERSION(1, 1) 1758e0b223SMarc Zyngier 18*512865d8SWill Deacon #define KVM_ARM_PSCI_LATEST KVM_ARM_PSCI_1_1 191a2fb94eSMarc Zyngier kvm_psci_version(struct kvm_vcpu * vcpu)20dfefa04aSOliver Uptonstatic inline int kvm_psci_version(struct kvm_vcpu *vcpu) 21a4097b35SMarc Zyngier { 22a4097b35SMarc Zyngier /* 23a4097b35SMarc Zyngier * Our PSCI implementation stays the same across versions from 24a4097b35SMarc Zyngier * v0.2 onward, only adding the few mandatory functions (such 25a4097b35SMarc Zyngier * as FEATURES with 1.0) that are required by newer 2685bd0ba1SMarc Zyngier * revisions. It is thus safe to return the latest, unless 2785bd0ba1SMarc Zyngier * userspace has instructed us otherwise. 28a4097b35SMarc Zyngier */ 2985bd0ba1SMarc Zyngier if (test_bit(KVM_ARM_VCPU_PSCI_0_2, vcpu->arch.features)) { 3085bd0ba1SMarc Zyngier if (vcpu->kvm->arch.psci_version) 3185bd0ba1SMarc Zyngier return vcpu->kvm->arch.psci_version; 3285bd0ba1SMarc Zyngier 33a4097b35SMarc Zyngier return KVM_ARM_PSCI_LATEST; 3485bd0ba1SMarc Zyngier } 35a4097b35SMarc Zyngier 36a4097b35SMarc Zyngier return KVM_ARM_PSCI_0_1; 37a4097b35SMarc Zyngier } 38a4097b35SMarc Zyngier 39a4097b35SMarc Zyngier 4055009c6eSChristoffer Dall int kvm_psci_call(struct kvm_vcpu *vcpu); 411a2fb94eSMarc Zyngier 421a2fb94eSMarc Zyngier #endif /* __KVM_ARM_PSCI_H__ */ 43