]> Pileus Git - ~andy/linux/blobdiff - arch/powerpc/kvm/powerpc.c
kvm/ppc/mpic: in-kernel MPIC emulation
[~andy/linux] / arch / powerpc / kvm / powerpc.c
index 6b810862485142462943fc7383974ae24790eb03..88d69cf1f953934d0afebdec4fd13fc6b184e19a 100644 (file)
@@ -317,6 +317,7 @@ int kvm_dev_ioctl_check_extension(long ext)
        case KVM_CAP_ENABLE_CAP:
        case KVM_CAP_ONE_REG:
        case KVM_CAP_IOEVENTFD:
+       case KVM_CAP_DEVICE_CTRL:
                r = 1;
                break;
 #ifndef CONFIG_KVM_BOOK3S_64_HV
@@ -762,7 +763,10 @@ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
                break;
        case KVM_CAP_PPC_EPR:
                r = 0;
-               vcpu->arch.epr_enabled = cap->args[0];
+               if (cap->args[0])
+                       vcpu->arch.epr_flags |= KVMPPC_EPR_USER;
+               else
+                       vcpu->arch.epr_flags &= ~KVMPPC_EPR_USER;
                break;
 #ifdef CONFIG_BOOKE
        case KVM_CAP_PPC_BOOKE_WATCHDOG:
@@ -908,6 +912,7 @@ static int kvm_vm_ioctl_get_pvinfo(struct kvm_ppc_pvinfo *pvinfo)
 long kvm_arch_vm_ioctl(struct file *filp,
                        unsigned int ioctl, unsigned long arg)
 {
+       struct kvm *kvm __maybe_unused = filp->private_data;
        void __user *argp = (void __user *)arg;
        long r;
 
@@ -926,7 +931,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
 #ifdef CONFIG_PPC_BOOK3S_64
        case KVM_CREATE_SPAPR_TCE: {
                struct kvm_create_spapr_tce create_tce;
-               struct kvm *kvm = filp->private_data;
 
                r = -EFAULT;
                if (copy_from_user(&create_tce, argp, sizeof(create_tce)))
@@ -938,7 +942,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
 
 #ifdef CONFIG_KVM_BOOK3S_64_HV
        case KVM_ALLOCATE_RMA: {
-               struct kvm *kvm = filp->private_data;
                struct kvm_allocate_rma rma;
 
                r = kvm_vm_ioctl_allocate_rma(kvm, &rma);
@@ -948,7 +951,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
        }
 
        case KVM_PPC_ALLOCATE_HTAB: {
-               struct kvm *kvm = filp->private_data;
                u32 htab_order;
 
                r = -EFAULT;
@@ -965,7 +967,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
        }
 
        case KVM_PPC_GET_HTAB_FD: {
-               struct kvm *kvm = filp->private_data;
                struct kvm_get_htab_fd ghf;
 
                r = -EFAULT;
@@ -978,7 +979,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
 
 #ifdef CONFIG_PPC_BOOK3S_64
        case KVM_PPC_GET_SMMU_INFO: {
-               struct kvm *kvm = filp->private_data;
                struct kvm_ppc_smmu_info info;
 
                memset(&info, 0, sizeof(info));