mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
c24cc9c8a6
commit
f9cbd9b025
|
@ -2520,6 +2520,7 @@ Parameters: struct kvm_device_attr
|
|||
Returns: 0 on success, -1 on error
|
||||
Errors:
|
||||
ENXIO: The group or attribute is unknown/unsupported for this device
|
||||
or hardware support is missing.
|
||||
EPERM: The attribute cannot (currently) be accessed this way
|
||||
(e.g. read-only attribute, or attribute that only makes
|
||||
sense when the device is in a different state)
|
||||
|
@ -2547,6 +2548,7 @@ Parameters: struct kvm_device_attr
|
|||
Returns: 0 on success, -1 on error
|
||||
Errors:
|
||||
ENXIO: The group or attribute is unknown/unsupported for this device
|
||||
or hardware support is missing.
|
||||
|
||||
Tests whether a device supports a particular attribute. A successful
|
||||
return indicates the attribute is implemented. It does not necessarily
|
||||
|
|
|
@ -20,7 +20,8 @@ Enables Collaborative Memory Management Assist (CMMA) for the virtual machine.
|
|||
|
||||
1.2. ATTRIBUTE: KVM_S390_VM_MEM_CLR_CMMA
|
||||
Parameters: none
|
||||
Returns: 0
|
||||
Returns: -EINVAL if CMMA was not enabled
|
||||
0 otherwise
|
||||
|
||||
Clear the CMMA status for all guest pages, so any pages the guest marked
|
||||
as unused are again used any may not be reclaimed by the host.
|
||||
|
|
|
@ -485,7 +485,7 @@ static int kvm_s390_set_mem_control(struct kvm *kvm, struct kvm_device_attr *att
|
|||
unsigned int idx;
|
||||
switch (attr->attr) {
|
||||
case KVM_S390_VM_MEM_ENABLE_CMMA:
|
||||
ret = -EINVAL;
|
||||
ret = -ENXIO;
|
||||
if (!sclp.has_cmma)
|
||||
break;
|
||||
|
||||
|
@ -499,6 +499,9 @@ static int kvm_s390_set_mem_control(struct kvm *kvm, struct kvm_device_attr *att
|
|||
mutex_unlock(&kvm->lock);
|
||||
break;
|
||||
case KVM_S390_VM_MEM_CLR_CMMA:
|
||||
ret = -ENXIO;
|
||||
if (!sclp.has_cmma)
|
||||
break;
|
||||
ret = -EINVAL;
|
||||
if (!kvm->arch.use_cmma)
|
||||
break;
|
||||
|
@ -964,6 +967,8 @@ static int kvm_s390_vm_has_attr(struct kvm *kvm, struct kvm_device_attr *attr)
|
|||
switch (attr->attr) {
|
||||
case KVM_S390_VM_MEM_ENABLE_CMMA:
|
||||
case KVM_S390_VM_MEM_CLR_CMMA:
|
||||
ret = sclp.has_cmma ? 0 : -ENXIO;
|
||||
break;
|
||||
case KVM_S390_VM_MEM_LIMIT_SIZE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue