On 01.08.2018 13:25, Janosch Frank wrote: > We currently do not notify all gmaps when using gmap_pmdp_xchg(), due > to locking constraints. This makes ucontrol vms, which is the only vm > type that creates multiple gmaps, incompatible with huge pages. > > ucontrol vms are rather exotic and creating a new locking concept is > no easy task. Hence we return EINVAL when trying to active > KVM_CAP_S390_HPAGE_1M and report it as being not available when > checking for it. > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > --- > arch/s390/kvm/kvm-s390.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index f9d90337e64a..549f38d1baa1 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -481,7 +481,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) > break; > case KVM_CAP_S390_HPAGE_1M: > r = 0; > - if (hpage) > + if (hpage && !kvm_is_ucontrol(kvm)) > r = 1; > break; > case KVM_CAP_S390_MEM_OP: > @@ -691,7 +691,7 @@ static int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap) > mutex_lock(&kvm->lock); > if (kvm->created_vcpus) > r = -EBUSY; > - else if (!hpage || kvm->arch.use_cmma) > + else if (!hpage || kvm->arch.use_cmma || kvm_is_ucontrol(kvm)) > r = -EINVAL; > else { > r = 0; > Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> Are there still users for ucontrol? Would it make sense to rip it out? -- Thanks, David / dhildenb