qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	thuth@redhat.com, cohuck@redhat.com, david@redhat.com,
	borntraeger@de.ibm.com, Alexander Graf <agraf@suse.de>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Matthew Rosato <mjrosato@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH v3 21/21] s390x: allow CPU hotplug in random core-id order
Date: Thu,  7 Sep 2017 22:13:35 +0200	[thread overview]
Message-ID: <20170907201335.13956-22-david@redhat.com> (raw)
In-Reply-To: <20170907201335.13956-1-david@redhat.com>

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 <david@redhat.com>
---
 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 ad9dcdaaf1..5701a41112 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)
                    cpu->env.core_id);
         goto out;
     }
-    if (cpu->env.core_id != scc->next_core_id) {
-        error_setg(&err, "Unable to add CPU: %" PRIu32
-                   ", the next available 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);
-- 
2.13.5

      parent reply	other threads:[~2017-09-07 20:14 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-07 20:13 [Qemu-devel] [PATCH v3 00/21] s390x cleanups and CPU hotplug via device_add David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 01/21] exec, dump, i386, ppc, s390x: don't include exec/cpu-all.h explicitly David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 02/21] cpu: drop old comments describing members David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 03/21] s390x: get rid of s390-virtio.c David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 04/21] s390x: rename s390-virtio.h to s390-virtio-hcall.h David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 05/21] target/s390x: move typedef of S390CPU to its definition David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 06/21] s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 07/21] s390x: move subsystem_reset() to s390-virtio-ccw.h David Hildenbrand
2017-09-08  3:58   ` Thomas Huth
2017-09-08  7:50   ` Christian Borntraeger
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 08/21] s390x: move sclp_service_call() to sclp.h David Hildenbrand
2017-09-08  4:21   ` Thomas Huth
2017-09-08 12:29     ` Markus Armbruster
2017-09-11  2:19       ` Thomas Huth
2017-10-02  7:01         ` Markus Armbruster
2017-09-08 12:46     ` David Hildenbrand
2017-09-09 22:07       ` Eduardo Habkost
2017-09-11  2:23         ` Thomas Huth
2017-09-11 18:22           ` Eduardo Habkost
2017-09-11 10:23         ` Paolo Bonzini
2017-09-11 13:45           ` David Hildenbrand
2017-09-11 17:52           ` Eduardo Habkost
2017-09-11 17:56             ` David Hildenbrand
2017-09-11 18:06               ` Eduardo Habkost
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 09/21] target/s390x: use trigger_pgm_exception() in s390_cpu_handle_mmu_fault() David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 10/21] target/s390x: use program_interrupt() in per_check_exception() David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 11/21] s390x: allow only 1 CPU with TCG David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 12/21] target/s390x: set cpu->id for linux user when realizing David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 13/21] target/s390x: use "core-id" for cpu number/address/id handling David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 14/21] target/s390x: rename next_cpu_id to next_core_id David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 15/21] s390x: print CPU definitions in sorted order David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 16/21] s390x: allow cpu hotplug via device_add David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 17/21] s390x: CPU hot unplug via device_del cannot work for now David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 18/21] s390x: implement query-hotpluggable-cpus David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 19/21] s390x: get rid of cpu_s390x_create() David Hildenbrand
2017-09-07 20:13 ` [Qemu-devel] [PATCH v3 20/21] s390x: generate sclp cpu information from possible_cpus David Hildenbrand
2017-09-07 20:13 ` David Hildenbrand [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170907201335.13956-22-david@redhat.com \
    --to=david@redhat.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).