[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);
- Re: [Qemu-devel] [PATCH v5 17/22] s390x: CPU hot unplug via device_del cannot work for now, (continued)
- [Qemu-devel] [PATCH v5 18/22] s390x: implement query-hotpluggable-cpus, David Hildenbrand, 2017/09/13
- [Qemu-devel] [PATCH v5 19/22] s390x: get rid of cpu_states and use possible_cpus instead, David Hildenbrand, 2017/09/13
- [Qemu-devel] [PATCH v5 20/22] s390x: get rid of cpu_s390x_create(), David Hildenbrand, 2017/09/13
- [Qemu-devel] [PATCH v5 21/22] s390x: generate sclp cpu information from possible_cpus, David Hildenbrand, 2017/09/13
- [Qemu-devel] [PATCH v5 22/22] s390x: allow CPU hotplug in random core-id order, David Hildenbrand, 2017/09/13
- Re: [Qemu-devel] [PATCH v5 22/22] s390x: allow CPU hotplug in random core-id order,
Igor Mammedov <=
- Re: [Qemu-devel] [PATCH v5 00/22] s390x cleanups and CPU hotplug via device_add, Cornelia Huck, 2017/09/13