[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [for-5.0 PATCH v2 3/4] spapr/xics: Configure number of servers in KV
From: |
Cédric Le Goater |
Subject: |
Re: [for-5.0 PATCH v2 3/4] spapr/xics: Configure number of servers in KVM |
Date: |
Tue, 26 Nov 2019 18:02:26 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 26/11/2019 17:46, Greg Kurz wrote:
> The XICS-on-XIVE KVM devices now has an attribute to configure the number
> of interrupt servers. This allows to greatly optimize the usage of the VP
> space in the XIVE HW, and thus to start a lot more VMs.
>
> Only set this attribute if available in order to support older POWER9 KVM
> and pre-POWER9 XICS KVM devices.
>
> The XICS-on-XIVE KVM device now reports the exhaustion of VPs upon the
> connection of the first VCPU. Check that in order to have a chance to
> provide a hint to the user.
> `
> Signed-off-by: Greg Kurz <address@hidden>
Reviewed-by: Cédric Le Goater <address@hidden>
> ---
> hw/intc/xics_kvm.c | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c
> index a1f1b7b0d37c..8d6156578fbc 100644
> --- a/hw/intc/xics_kvm.c
> +++ b/hw/intc/xics_kvm.c
> @@ -165,8 +165,15 @@ void icp_kvm_realize(DeviceState *dev, Error **errp)
>
> ret = kvm_vcpu_enable_cap(cs, KVM_CAP_IRQ_XICS, 0, kernel_xics_fd,
> vcpu_id);
> if (ret < 0) {
> - error_setg(errp, "Unable to connect CPU%ld to kernel XICS: %s",
> vcpu_id,
> - strerror(errno));
> + Error *local_err = NULL;
> +
> + error_setg(&local_err, "Unable to connect CPU%ld to kernel XICS: %s",
> + vcpu_id, strerror(errno));
> + if (errno == ENOSPC) {
> + error_append_hint(&local_err, "Try -smp maxcpus=N with N < %u\n",
> + MACHINE(qdev_get_machine())->smp.max_cpus);
> + }
> + error_propagate(errp, local_err);
> return;
> }
> enabled_icp = g_malloc(sizeof(*enabled_icp));
> @@ -399,6 +406,16 @@ int xics_kvm_connect(SpaprInterruptController *intc,
> uint32_t nr_servers,
> goto fail;
> }
>
> + /* Tell KVM about the # of VCPUs we may have (POWER9 and newer only) */
> + if (kvm_device_check_attr(rc, KVM_DEV_XICS_GRP_CTRL,
> + KVM_DEV_XICS_NR_SERVERS)) {
> + if (kvm_device_access(rc, KVM_DEV_XICS_GRP_CTRL,
> + KVM_DEV_XICS_NR_SERVERS, &nr_servers, true,
> + &local_err)) {
> + goto fail;
> + }
> + }
> +
> kernel_xics_fd = rc;
> kvm_kernel_irqchip = true;
> kvm_msi_via_irqfd_allowed = true;
>
- [for-5.0 PATCH v2 0/4] spapr: Use less XIVE HW resources in KVM, Greg Kurz, 2019/11/26
- [for-5.0 PATCH v2 1/4] linux-headers: Update, Greg Kurz, 2019/11/26
- [for-5.0 PATCH v2 2/4] spapr: Pass the maximum number of vCPUs to the KVM interrupt controller, Greg Kurz, 2019/11/26
- [for-5.0 PATCH v2 3/4] spapr/xics: Configure number of servers in KVM, Greg Kurz, 2019/11/26
- Re: [for-5.0 PATCH v2 3/4] spapr/xics: Configure number of servers in KVM,
Cédric Le Goater <=
- [for-5.0 PATCH v2 4/4] spapr/xive: Configure number of servers in KVM, Greg Kurz, 2019/11/26
- Re: [for-5.0 PATCH v2 0/4] spapr: Use less XIVE HW resources in KVM, David Gibson, 2019/11/27