[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 21/21] s390x: allow CPU hotplug in random core-id
From: |
David Hildenbrand |
Subject: |
[Qemu-devel] [PATCH v4 21/21] s390x: allow CPU hotplug in random core-id order |
Date: |
Mon, 11 Sep 2017 17:21:50 +0200 |
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>
---
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 7f174f90a4..b292be7ae3 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -200,6 +200,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)) {
@@ -207,12 +208,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;
@@ -220,7 +215,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);
--
2.13.5
- Re: [Qemu-devel] [PATCH v4 14/21] target/s390x: rename next_cpu_id to next_core_id, (continued)
- [Qemu-devel] [PATCH v4 16/21] s390x: allow cpu hotplug via device_add, David Hildenbrand, 2017/09/11
- [Qemu-devel] [PATCH v4 17/21] s390x: CPU hot unplug via device_del cannot work for now, David Hildenbrand, 2017/09/11
- [Qemu-devel] [PATCH v4 15/21] s390x: print CPU definitions in sorted order, David Hildenbrand, 2017/09/11
- [Qemu-devel] [PATCH v4 18/21] s390x: implement query-hotpluggable-cpus, David Hildenbrand, 2017/09/11
- [Qemu-devel] [PATCH v4 19/21] s390x: get rid of cpu_s390x_create(), David Hildenbrand, 2017/09/11
- [Qemu-devel] [PATCH v4 21/21] s390x: allow CPU hotplug in random core-id order,
David Hildenbrand <=
- [Qemu-devel] [PATCH v4 20/21] s390x: generate sclp cpu information from possible_cpus, David Hildenbrand, 2017/09/11
- Re: [Qemu-devel] [PATCH v4 00/21] s390x cleanups and CPU hotplug via device_add, Igor Mammedov, 2017/09/12