[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/7] spapr/xive: Configure number of servers in KVM
From: |
Cédric Le Goater |
Subject: |
Re: [PATCH 6/7] spapr/xive: Configure number of servers in KVM |
Date: |
Thu, 3 Oct 2019 14:30:29 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.0 |
On 03/10/2019 14:01, Greg Kurz wrote:
> The 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.
>
> The 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 an hint to the user.
>
> Signed-off-by: Greg Kurz <address@hidden>
Reviewed-by: Cédric Le Goater <address@hidden>
> ---
> hw/intc/spapr_xive_kvm.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c
> index 51b334b676a1..2a3a9ef22b6f 100644
> --- a/hw/intc/spapr_xive_kvm.c
> +++ b/hw/intc/spapr_xive_kvm.c
> @@ -152,7 +152,8 @@ void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx,
> Error **errp)
>
> void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp)
> {
> - SpaprXive *xive = SPAPR_MACHINE(qdev_get_machine())->xive;
> + MachineState *ms = MACHINE(qdev_get_machine());
> + SpaprXive *xive = SPAPR_MACHINE(ms)->xive;
> unsigned long vcpu_id;
> int ret;
>
> @@ -171,8 +172,15 @@ void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error
> **errp)
> ret = kvm_vcpu_enable_cap(tctx->cs, KVM_CAP_PPC_IRQ_XIVE, 0, xive->fd,
> vcpu_id, 0);
> if (ret < 0) {
> - error_setg(errp, "XIVE: unable to connect CPU%ld to KVM device: %s",
> + Error *err = NULL;
> +
> + error_setg(&err, "XIVE: unable to connect CPU%ld to KVM device: %s",
> vcpu_id, strerror(errno));
> + if (errno == ENOSPC) {
> + error_append_hint(&local_err, "Try -smp maxcpus=N with N < %u\n",
> + ms->smp.max_cpus);
> + }
> + error_propagate(errp, err);
> return;
> }
>
> @@ -768,6 +776,16 @@ void kvmppc_xive_connect(SpaprXive *xive, Error **errp)
> return;
> }
>
> + /* Tell KVM about the # of VCPUs we may have */
> + if (kvm_device_check_attr(xive->fd, KVM_DEV_XIVE_GRP_CTRL,
> + KVM_DEV_XIVE_NR_SERVERS)) {
> + if (kvm_device_access(xive->fd, KVM_DEV_XIVE_GRP_CTRL,
> + KVM_DEV_XIVE_NR_SERVERS, &xive->nr_servers,
> true,
> + &local_err)) {
> + goto fail;
> + }
> + }
> +
> /*
> * 1. Source ESB pages - KVM mapping
> */
>
- Re: [PATCH 2/7] spapr, xive: Turn "nr-ends" property into "nr-servers" property, (continued)
[PATCH 3/7] spapr, xics, xive: Drop nr_servers argument in DT-related functions, Greg Kurz, 2019/10/03
[PATCH RFC 4/7] linux-headers: Update against 5.3-rc2, Greg Kurz, 2019/10/03
[PATCH 5/7] spapr/xics: Configure number of servers in KVM, Greg Kurz, 2019/10/03
[PATCH 6/7] spapr/xive: Configure number of servers in KVM, Greg Kurz, 2019/10/03
- Re: [PATCH 6/7] spapr/xive: Configure number of servers in KVM,
Cédric Le Goater <=
[PATCH 7/7] spapr: Set VSMT to smp_threads by default, Greg Kurz, 2019/10/03