As with PSCI v1.1 in commit 
512865d83fd9 ("KVM: arm64: Bump guest PSCI
version to 1.1"), expose v1.3 to the guest by default. The SYSTEM_OFF2
call which is exposed by doing so is compatible for userspace because
it's just a new flag in the event that KVM raises, in precisely the same
way that SYSTEM_RESET2 was compatible when v1.1 was enabled by default.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Miguel Luis <miguel.luis@oracle.com>
Link: https://lore.kernel.org/r/20241019172459.2241939-4-dwmw2@infradead.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
 
                case KVM_ARM_PSCI_0_2:
                case KVM_ARM_PSCI_1_0:
                case KVM_ARM_PSCI_1_1:
+               case KVM_ARM_PSCI_1_2:
+               case KVM_ARM_PSCI_1_3:
                        if (!wants_02)
                                return -EINVAL;
                        vcpu->kvm->arch.psci_version = val;
 
 
        switch(psci_fn) {
        case PSCI_0_2_FN_PSCI_VERSION:
-               val = minor == 0 ? KVM_ARM_PSCI_1_0 : KVM_ARM_PSCI_1_1;
+               val = PSCI_VERSION(1, minor);
                break;
        case PSCI_1_0_FN_PSCI_FEATURES:
                arg = smccc_get_arg1(vcpu);
        }
 
        switch (version) {
+       case KVM_ARM_PSCI_1_3:
+               return kvm_psci_1_x_call(vcpu, 3);
+       case KVM_ARM_PSCI_1_2:
+               return kvm_psci_1_x_call(vcpu, 2);
        case KVM_ARM_PSCI_1_1:
                return kvm_psci_1_x_call(vcpu, 1);
        case KVM_ARM_PSCI_1_0:
 
 #define KVM_ARM_PSCI_0_2       PSCI_VERSION(0, 2)
 #define KVM_ARM_PSCI_1_0       PSCI_VERSION(1, 0)
 #define KVM_ARM_PSCI_1_1       PSCI_VERSION(1, 1)
+#define KVM_ARM_PSCI_1_2       PSCI_VERSION(1, 2)
+#define KVM_ARM_PSCI_1_3       PSCI_VERSION(1, 3)
 
-#define KVM_ARM_PSCI_LATEST    KVM_ARM_PSCI_1_1
+#define KVM_ARM_PSCI_LATEST    KVM_ARM_PSCI_1_3
 
 static inline int kvm_psci_version(struct kvm_vcpu *vcpu)
 {