Make s390 support KVM_ENABLE_CAP.
Unified · Split
| @@ -913,7 +913,7 @@ documentation when it pops into existence). · 912 unmodified lines | |||
| 913 | 4.37 KVM_ENABLE_CAP | 913 | 4.37 KVM_ENABLE_CAP |
| 914 | 914 | ||
| 915 | Capability: KVM_CAP_ENABLE_CAP | 915 | Capability: KVM_CAP_ENABLE_CAP |
| 916 | Architectures: ppc | 916 | Architectures: ppc, s390 |
| 917 | Type: vcpu ioctl | 917 | Type: vcpu ioctl |
| 918 | Parameters: struct kvm_enable_cap (in) | 918 | Parameters: struct kvm_enable_cap (in) |
| 919 | Returns: 0 on success; -1 on error | 919 | Returns: 0 on success; -1 on error |
| @@ -140,6 +140,7 @@ int kvm_dev_ioctl_check_extension(long ext) · 139 unmodified lines | |||
| 140 | #endif | 140 | #endif |
| 141 | case KVM_CAP_SYNC_REGS: | 141 | case KVM_CAP_SYNC_REGS: |
| 142 | case KVM_CAP_ONE_REG: | 142 | case KVM_CAP_ONE_REG: |
| 143 | case KVM_CAP_ENABLE_CAP: | ||
| 143 | r = 1; | 144 | r = 1; |
| 144 | break; | 145 | break; |
| 145 | case KVM_CAP_NR_VCPUS: | 146 | case KVM_CAP_NR_VCPUS: |
| @@ -808,6 +809,22 @@ int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr) · 662 unmodified lines | |||
| 808 | return 0; | 809 | return 0; |
| 809 | } | 810 | } |
| 810 | 811 | ||
| 812 | static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu, | ||
| 813 | struct kvm_enable_cap *cap) | ||
| 814 | { | ||
| 815 | int r; | ||
| 816 | |||
| 817 | if (cap->flags) | ||
| 818 | return -EINVAL; | ||
| 819 | |||
| 820 | switch (cap->cap) { | ||
| 821 | default: | ||
| 822 | r = -EINVAL; | ||
| 823 | break; | ||
| 824 | } | ||
| 825 | return r; | ||
| 826 | } | ||
| 827 | |||
| 811 | long kvm_arch_vcpu_ioctl(struct file *filp, | 828 | long kvm_arch_vcpu_ioctl(struct file *filp, |
| 812 | unsigned int ioctl, unsigned long arg) | 829 | unsigned int ioctl, unsigned long arg) |
| 813 | { | 830 | { |
| @@ -894,6 +911,15 @@ long kvm_arch_vcpu_ioctl(struct file *filp, · 80 unmodified lines | |||
| 894 | r = 0; | 911 | r = 0; |
| 895 | break; | 912 | break; |
| 896 | } | 913 | } |
| 914 | case KVM_ENABLE_CAP: | ||
| 915 | { | ||
| 916 | struct kvm_enable_cap cap; | ||
| 917 | r = -EFAULT; | ||
| 918 | if (copy_from_user(&cap, argp, sizeof(cap))) | ||
| 919 | break; | ||
| 920 | r = kvm_vcpu_ioctl_enable_cap(vcpu, &cap); | ||
| 921 | break; | ||
| 922 | } | ||
| 897 | default: | 923 | default: |
| 898 | r = -ENOTTY; | 924 | r = -ENOTTY; |
| 899 | } | 925 | } |