diff mbox series

[v2,5/6] KVM: s390: Cap KVM_CAP_NR_VCPUS by num_online_cpus()

Message ID 20211116163443.88707-6-vkuznets@redhat.com (mailing list archive)
State Not Applicable
Headers show
Series KVM: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS and re-purpose it on x86 | expand

Commit Message

Vitaly Kuznetsov Nov. 16, 2021, 4:34 p.m. UTC
KVM_CAP_NR_VCPUS is a legacy advisory value which on other architectures
return num_online_cpus() caped by KVM_CAP_NR_VCPUS or something else
(ppc and arm64 are special cases). On s390, KVM_CAP_NR_VCPUS returns
the same as KVM_CAP_MAX_VCPUS and this may turn out to be a bad
'advice'. Switch s390 to returning caped num_online_cpus() too.

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 arch/s390/kvm/kvm-s390.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Christian Borntraeger Nov. 17, 2021, 7:33 a.m. UTC | #1
Am 16.11.21 um 17:34 schrieb Vitaly Kuznetsov:
> KVM_CAP_NR_VCPUS is a legacy advisory value which on other architectures
> return num_online_cpus() caped by KVM_CAP_NR_VCPUS or something else
> (ppc and arm64 are special cases). On s390, KVM_CAP_NR_VCPUS returns
> the same as KVM_CAP_MAX_VCPUS and this may turn out to be a bad
> 'advice'. Switch s390 to returning caped num_online_cpus() too.
> 
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

you can also add
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>

(yes I am changing my default address, but the other should continue to work)

> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> ---
>   arch/s390/kvm/kvm-s390.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index 6a6dd5e1daf6..1cfe36f6432e 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -585,6 +585,8 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
>   			r = KVM_MAX_VCPUS;
>   		else if (sclp.has_esca && sclp.has_64bscao)
>   			r = KVM_S390_ESCA_CPU_SLOTS;
> +		if (ext == KVM_CAP_NR_VCPUS)
> +			r = min_t(unsigned int, num_online_cpus(), r);
>   		break;
>   	case KVM_CAP_S390_COW:
>   		r = MACHINE_HAS_ESOP;
>
diff mbox series

Patch

diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 6a6dd5e1daf6..1cfe36f6432e 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -585,6 +585,8 @@  int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 			r = KVM_MAX_VCPUS;
 		else if (sclp.has_esca && sclp.has_64bscao)
 			r = KVM_S390_ESCA_CPU_SLOTS;
+		if (ext == KVM_CAP_NR_VCPUS)
+			r = min_t(unsigned int, num_online_cpus(), r);
 		break;
 	case KVM_CAP_S390_COW:
 		r = MACHINE_HAS_ESOP;