Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Copyright (C) 2012,2013 - ARM Ltd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Author: Marc Zyngier <marc.zyngier@arm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #ifndef __KVM_ARM_PSCI_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #define __KVM_ARM_PSCI_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/kvm_host.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <uapi/linux/psci.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define KVM_ARM_PSCI_0_1	PSCI_VERSION(0, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define KVM_ARM_PSCI_0_2	PSCI_VERSION(0, 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define KVM_ARM_PSCI_1_0	PSCI_VERSION(1, 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define KVM_ARM_PSCI_LATEST	KVM_ARM_PSCI_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)  * We need the KVM pointer independently from the vcpu as we can call
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)  * this from HYP, and need to apply kern_hyp_va on it...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) static inline int kvm_psci_version(struct kvm_vcpu *vcpu, struct kvm *kvm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	 * Our PSCI implementation stays the same across versions from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	 * v0.2 onward, only adding the few mandatory functions (such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	 * as FEATURES with 1.0) that are required by newer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	 * revisions. It is thus safe to return the latest, unless
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	 * userspace has instructed us otherwise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	if (test_bit(KVM_ARM_VCPU_PSCI_0_2, vcpu->arch.features)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 		if (vcpu->kvm->arch.psci_version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 			return vcpu->kvm->arch.psci_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 		return KVM_ARM_PSCI_LATEST;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	return KVM_ARM_PSCI_0_1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) int kvm_psci_call(struct kvm_vcpu *vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct kvm_one_reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) int kvm_arm_get_fw_num_regs(struct kvm_vcpu *vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) int kvm_arm_copy_fw_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) int kvm_arm_get_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #endif /* __KVM_ARM_PSCI_H__ */