qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 22/22] s390x: allow CPU hotplug in random cor


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v5 22/22] s390x: allow CPU hotplug in random core-id order
Date: Wed, 13 Sep 2017 16:46:24 +0200

On Wed, 13 Sep 2017 15:24:17 +0200
David Hildenbrand <address@hidden> wrote:

> SCLP correctly indicates the core-id aka. CPU address for each available
> CPU.
> 
> As the core-id corresponds to cpu_index, also a newly created kvm vcpu
> gets assigned this core-id as vcpu id. So SIGP in the kernel works
> correctly (it uses the vcpu id to lookup the correct CPU).
> 
> So there should be nothing hindering us from hotplugging CPUs in random
> core-id order.
> 
> This now makes sure that the output from "query-hotpluggable-cpus"
> is completely true. Until now, a specific order is implicit. Performance
> vice, hotplugging CPUs in non-sequential order might not be the best thing
> to do, as VCPU lookup inside KVM might be a little slower. But that
> doesn't hinder us from supporting it.
> 
> next_core_id is now used by linux user only.
> 
> Signed-off-by: David Hildenbrand <address@hidden>
Reviewed-by: Igor Mammedov <address@hidden>

> ---
>  target/s390x/cpu.c | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
> 
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index 5724dffb88..34538c3ab9 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -199,6 +199,7 @@ static void s390_cpu_realizefn(DeviceState *dev, Error 
> **errp)
>  #else
>      /* implicitly set for linux-user only */
>      cpu->env.core_id = scc->next_core_id;
> +    scc->next_core_id++;
>  #endif
>  
>      if (cpu_exists(cpu->env.core_id)) {
> @@ -206,12 +207,6 @@ static void s390_cpu_realizefn(DeviceState *dev, Error 
> **errp)
>                     ", it already exists", cpu->env.core_id);
>          goto out;
>      }
> -    if (cpu->env.core_id != scc->next_core_id) {
> -        error_setg(&err, "Unable to add CPU with core-id: %" PRIu32
> -                   ", the next available core-id is %" PRIu32, 
> cpu->env.core_id,
> -                   scc->next_core_id);
> -        goto out;
> -    }
>  
>      /* sync cs->cpu_index and env->core_id. The latter is needed for TCG. */
>      cs->cpu_index = env->core_id;
> @@ -219,7 +214,6 @@ static void s390_cpu_realizefn(DeviceState *dev, Error 
> **errp)
>      if (err != NULL) {
>          goto out;
>      }
> -    scc->next_core_id++;
>  
>  #if !defined(CONFIG_USER_ONLY)
>      qemu_register_reset(s390_cpu_machine_reset_cb, cpu);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]