Merge tag 'powerpc-5.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux-2.6-microblaze.git] / arch / powerpc / kvm / powerpc.c
index 25966ae..a2a68a9 100644 (file)
@@ -611,8 +611,8 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
                r = !!(hv_enabled && radix_enabled());
                break;
        case KVM_CAP_PPC_MMU_HASH_V3:
-               r = !!(hv_enabled && cpu_has_feature(CPU_FTR_ARCH_300) &&
-                      cpu_has_feature(CPU_FTR_HVMODE));
+               r = !!(hv_enabled && kvmppc_hv_ops->hash_v3_possible &&
+                      kvmppc_hv_ops->hash_v3_possible());
                break;
        case KVM_CAP_PPC_NESTED_HV:
                r = !!(hv_enabled && kvmppc_hv_ops->enable_nested &&
@@ -678,6 +678,10 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
                r = hv_enabled && kvmppc_hv_ops->enable_svm &&
                        !kvmppc_hv_ops->enable_svm(NULL);
                break;
+       case KVM_CAP_PPC_DAWR1:
+               r = !!(hv_enabled && kvmppc_hv_ops->enable_dawr1 &&
+                      !kvmppc_hv_ops->enable_dawr1(NULL));
+               break;
 #endif
        default:
                r = 0;
@@ -2187,6 +2191,12 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
                        break;
                r = kvm->arch.kvm_ops->enable_svm(kvm);
                break;
+       case KVM_CAP_PPC_DAWR1:
+               r = -EINVAL;
+               if (!is_kvmppc_hv_enabled(kvm) || !kvm->arch.kvm_ops->enable_dawr1)
+                       break;
+               r = kvm->arch.kvm_ops->enable_dawr1(kvm);
+               break;
 #endif
        default:
                r = -EINVAL;