All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: dahi@linux.vnet.ibm.com, agraf@suse.de, borntraeger@de.ibm.com,
	imammedo@redhat.com, bharata@linux.vnet.ibm.com,
	cornelia.huck@de.ibm.com, pbonzini@redhat.com, afaerber@suse.de,
	rth@twiddle.net
Subject: [Qemu-devel] [PATCH v6 4/7] s390x/cpu: Add CPU property links
Date: Mon, 22 Feb 2016 12:06:34 -0500	[thread overview]
Message-ID: <1456160797-832-5-git-send-email-mjrosato@linux.vnet.ibm.com> (raw)
In-Reply-To: <1456160797-832-1-git-send-email-mjrosato@linux.vnet.ibm.com>

Link each CPUState as property machine/cpu[n] during initialization.
Additionally, maintain an array of state pointers indexed by CPU
id for fast lookup during interrupt handling.

Signed-off-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
---
 hw/s390x/s390-virtio.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index b3707f4..6bd9803 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -60,15 +60,16 @@
 #define S390_TOD_CLOCK_VALUE_MISSING    0x00
 #define S390_TOD_CLOCK_VALUE_PRESENT    0x01
 
-static S390CPU **ipi_states;
+static S390CPU **cpu_states;
 
 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
 {
-    if (cpu_addr >= smp_cpus) {
+    if (cpu_addr >= max_cpus) {
         return NULL;
     }
 
-    return ipi_states[cpu_addr];
+    /* Fast lookup via CPU ID */
+    return cpu_states[cpu_addr];
 }
 
 void s390_init_ipl_dev(const char *kernel_filename,
@@ -98,19 +99,26 @@ void s390_init_ipl_dev(const char *kernel_filename,
 void s390_init_cpus(MachineState *machine)
 {
     int i;
+    gchar *name;
 
     if (machine->cpu_model == NULL) {
         machine->cpu_model = "host";
     }
 
-    ipi_states = g_malloc(sizeof(S390CPU *) * smp_cpus);
+    cpu_states = g_malloc0(sizeof(S390CPU *) * max_cpus);
 
-    for (i = 0; i < smp_cpus; i++) {
-        S390CPU *cpu;
-
-        cpu = cpu_s390x_init(machine->cpu_model);
+    for (i = 0; i < max_cpus; i++) {
+        name = g_strdup_printf("cpu[%i]", i);
+        object_property_add_link(OBJECT(machine), name, TYPE_S390_CPU,
+                                 (Object **) &cpu_states[i],
+                                 object_property_allow_set_link,
+                                 OBJ_PROP_LINK_UNREF_ON_RELEASE,
+                                 &error_abort);
+        g_free(name);
+    }
 
-        ipi_states[i] = cpu;
+    for (i = 0; i < smp_cpus; i++) {
+        cpu_s390x_init(machine->cpu_model);
     }
 }
 
-- 
1.9.1

  parent reply	other threads:[~2016-02-22 17:07 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-22 17:06 [Qemu-devel] [PATCH v6 0/7] Allow hotplug of s390 CPUs Matthew Rosato
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 1/7] s390x/cpu: Cleanup init in preparation for hotplug Matthew Rosato
2016-02-22 17:46   ` Andreas Färber
2016-02-22 20:30     ` Matthew Rosato
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 2/7] s390x/cpu: Set initial CPU state in common routine Matthew Rosato
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 3/7] s390x/cpu: Move some CPU initialization into realize Matthew Rosato
2016-02-22 17:35   ` Andreas Färber
2016-02-22 20:41     ` Matthew Rosato
2016-02-22 17:06 ` Matthew Rosato [this message]
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 5/7] s390/virtio-ccw: Add hotplug handler Matthew Rosato
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 6/7] cpu: Add a last_cpu macro Matthew Rosato
2016-02-22 17:30   ` Andreas Färber
2016-02-22 17:06 ` [Qemu-devel] [PATCH v6 7/7] s390x/cpu: Allow hotplug of CPUs Matthew Rosato
2016-02-22 17:22   ` Andreas Färber
2016-02-22 20:54     ` Matthew Rosato

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=1456160797-832-5-git-send-email-mjrosato@linux.vnet.ibm.com \
    --to=mjrosato@linux.vnet.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=dahi@linux.vnet.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.