aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2016-03-03 03:48:47 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2016-06-10 06:07:20 -0400
commitf9cbd9b02539330ddd349df583fcfc2db8a23b90 (patch)
treec4a49b793c57ec1cf50bf3ecc8a8442d4880de8a /arch/s390/kvm
parentc24cc9c8a6ca798427d3ff46b55df8403361df3e (diff)
KVM: s390: provide CMMA attributes only if available
Let's not provide the device attribute for cmma enabling and clearing if the hardware doesn't support it. This also helps getting rid of the undocumented return value "-EINVAL" in case CMMA is not available when trying to enable it. Also properly document the meaning of -EINVAL for CMMA clearing. Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r--arch/s390/kvm/kvm-s390.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 005e664f6360..f695c6e08337 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -485,7 +485,7 @@ static int kvm_s390_set_mem_control(struct kvm *kvm, struct kvm_device_attr *att
485 unsigned int idx; 485 unsigned int idx;
486 switch (attr->attr) { 486 switch (attr->attr) {
487 case KVM_S390_VM_MEM_ENABLE_CMMA: 487 case KVM_S390_VM_MEM_ENABLE_CMMA:
488 ret = -EINVAL; 488 ret = -ENXIO;
489 if (!sclp.has_cmma) 489 if (!sclp.has_cmma)
490 break; 490 break;
491 491
@@ -499,6 +499,9 @@ static int kvm_s390_set_mem_control(struct kvm *kvm, struct kvm_device_attr *att
499 mutex_unlock(&kvm->lock); 499 mutex_unlock(&kvm->lock);
500 break; 500 break;
501 case KVM_S390_VM_MEM_CLR_CMMA: 501 case KVM_S390_VM_MEM_CLR_CMMA:
502 ret = -ENXIO;
503 if (!sclp.has_cmma)
504 break;
502 ret = -EINVAL; 505 ret = -EINVAL;
503 if (!kvm->arch.use_cmma) 506 if (!kvm->arch.use_cmma)
504 break; 507 break;
@@ -964,6 +967,8 @@ static int kvm_s390_vm_has_attr(struct kvm *kvm, struct kvm_device_attr *attr)
964 switch (attr->attr) { 967 switch (attr->attr) {
965 case KVM_S390_VM_MEM_ENABLE_CMMA: 968 case KVM_S390_VM_MEM_ENABLE_CMMA:
966 case KVM_S390_VM_MEM_CLR_CMMA: 969 case KVM_S390_VM_MEM_CLR_CMMA:
970 ret = sclp.has_cmma ? 0 : -ENXIO;
971 break;
967 case KVM_S390_VM_MEM_LIMIT_SIZE: 972 case KVM_S390_VM_MEM_LIMIT_SIZE:
968 ret = 0; 973 ret = 0;
969 break; 974 break;