All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: agraf@suse.de, thuth@redhat.com, lvivier@redhat.com,
	qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
	mdroth@linux.vnet.ibm.com, imammedo@redhat.com,
	David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PULL 35/43] pc: pass apic_id to pc_find_cpu_slot() directly so lookup could be done without CPU object
Date: Wed, 22 Feb 2017 17:33:40 +1100	[thread overview]
Message-ID: <20170222063348.32176-36-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20170222063348.32176-1-david@gibson.dropbear.id.au>

From: Igor Mammedov <imammedo@redhat.com>

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/i386/pc.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 50ba977..3475174 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1789,12 +1789,11 @@ static int pc_apic_cmp(const void *a, const void *b)
  * in ms->possible_cpus->cpus, if ms->possible_cpus->cpus has no
  * entry corresponding to CPU's apic_id returns NULL.
  */
-static CPUArchId *pc_find_cpu_slot(MachineState *ms, CPUState *cpu, int *idx)
+static CPUArchId *pc_find_cpu_slot(MachineState *ms, uint32_t id, int *idx)
 {
-    CPUClass *cc = CPU_GET_CLASS(cpu);
     CPUArchId apic_id, *found_cpu;
 
-    apic_id.arch_id = cc->get_arch_id(CPU(cpu));
+    apic_id.arch_id = id;
     found_cpu = bsearch(&apic_id, ms->possible_cpus->cpus,
         ms->possible_cpus->len, sizeof(*ms->possible_cpus->cpus),
         pc_apic_cmp);
@@ -1810,6 +1809,7 @@ static void pc_cpu_plug(HotplugHandler *hotplug_dev,
     CPUArchId *found_cpu;
     HotplugHandlerClass *hhc;
     Error *local_err = NULL;
+    X86CPU *cpu = X86_CPU(dev);
     PCMachineState *pcms = PC_MACHINE(hotplug_dev);
 
     if (pcms->acpi_dev) {
@@ -1829,7 +1829,7 @@ static void pc_cpu_plug(HotplugHandler *hotplug_dev,
         fw_cfg_modify_i16(pcms->fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus);
     }
 
-    found_cpu = pc_find_cpu_slot(MACHINE(pcms), CPU(dev), NULL);
+    found_cpu = pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL);
     found_cpu->cpu = CPU(dev);
 out:
     error_propagate(errp, local_err);
@@ -1840,9 +1840,10 @@ static void pc_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
     int idx = -1;
     HotplugHandlerClass *hhc;
     Error *local_err = NULL;
+    X86CPU *cpu = X86_CPU(dev);
     PCMachineState *pcms = PC_MACHINE(hotplug_dev);
 
-    pc_find_cpu_slot(MACHINE(pcms), CPU(dev), &idx);
+    pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx);
     assert(idx != -1);
     if (idx == 0) {
         error_setg(&local_err, "Boot CPU is unpluggable");
@@ -1867,6 +1868,7 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev,
     CPUArchId *found_cpu;
     HotplugHandlerClass *hhc;
     Error *local_err = NULL;
+    X86CPU *cpu = X86_CPU(dev);
     PCMachineState *pcms = PC_MACHINE(hotplug_dev);
 
     hhc = HOTPLUG_HANDLER_GET_CLASS(pcms->acpi_dev);
@@ -1876,7 +1878,7 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev,
         goto out;
     }
 
-    found_cpu = pc_find_cpu_slot(MACHINE(pcms), CPU(dev), NULL);
+    found_cpu = pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL);
     found_cpu->cpu = NULL;
     object_unparent(OBJECT(dev));
 
@@ -1934,7 +1936,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
         cpu->apic_id = apicid_from_topo_ids(smp_cores, smp_threads, &topo);
     }
 
-    cpu_slot = pc_find_cpu_slot(MACHINE(pcms), CPU(dev), &idx);
+    cpu_slot = pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx);
     if (!cpu_slot) {
         MachineState *ms = MACHINE(pcms);
 
-- 
2.9.3

  parent reply	other threads:[~2017-02-22  6:34 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22  6:33 [Qemu-devel] [PULL 00/43] ppc-for-2.9 queue 20170222 David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 01/43] spapr: cpu core: separate child threads destruction from machine state operations David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 02/43] spapr: move spapr_core_[foo]plug() callbacks close to machine code in spapr.c David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 03/43] spapr: make cpu core unplug follow expected hotunplug call flow David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 04/43] ppc: implement xsrqpi[x] instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 05/43] ppc: implement xsrqpxp instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 06/43] ppc: implement xssqrtqp instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 07/43] ppc: implement xssubqp instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 08/43] hw/ppc/pnv: Remove superfluous "qemu" prefix from error strings David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 09/43] target-ppc: Add xsmaxcdp and xsmincdp instructions David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 10/43] target-ppc: Add xsmaxjdp and xsminjdp instructions David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 11/43] spapr: fix off-by-one error in spapr_ovec_populate_dt() David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 12/43] target-ppc: implement load atomic instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 13/43] target-ppc: implement store " David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 14/43] target-ppc: generate exception for copy/paste David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 15/43] target-ppc: add slbieg instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 16/43] target-ppc: add slbsync implementation David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 17/43] target-ppc: add wait instruction David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 18/43] target-ppc, tcg: fix usermode segfault with pthread_create() David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 19/43] mac99: replace debug printf with trace points David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 20/43] ppc4xx: " David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 21/43] spapr: " David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 22/43] softfloat: Add round-to-odd rounding mode David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 23/43] softfloat: Add float128_to_uint64_round_to_zero() David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 24/43] softfloat: Add float128_to_uint32_round_to_zero() David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 25/43] target-ppc: Implement round to odd variants of quad FP instructions David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 26/43] target-ppc: Add xscvqpudz and xscvqpuwz instructions David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 27/43] target/ppc: Fix LPCR DPFD mask define David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 28/43] target/ppc/POWER9: Add ISAv3.00 MMU definition David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 29/43] target/ppc/POWER9: Adapt LPCR handling for POWER9 David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 30/43] target/ppc/POWER9: Direct all instr and data storage interrupts to the hypv David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 31/43] hw/pci-host/prep: Do not use hw_error() in realize function David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 32/43] machine: move possible_cpus to MachineState David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 33/43] pc: move pcms->possible_cpus init out of pc_cpus_init() David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 34/43] pc: calculate topology only once when possible_cpus is initialised David Gibson
2017-02-22  6:33 ` David Gibson [this message]
2017-02-22  6:33 ` [Qemu-devel] [PULL 36/43] change CPUArchId.cpu type to Object* David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 37/43] spapr: reuse machine->possible_cpus instead of cores[] David Gibson
2017-02-22 11:05   ` [Qemu-devel] [PATCH " Igor Mammedov
2017-02-24 13:03     ` David Gibson
2017-02-24 13:29       ` Igor Mammedov
2017-02-26 22:46         ` David Gibson
2017-02-27 12:41           ` Igor Mammedov
2017-02-22  6:33 ` [Qemu-devel] [PULL 38/43] machine: unify [pc_|spapr_]query_hotpluggable_cpus() callbacks David Gibson
2017-02-22 11:07   ` [Qemu-devel] [PATCH " Igor Mammedov
2017-02-22  6:33 ` [Qemu-devel] [PULL 39/43] machine: replace query_hotpluggable_cpus() callback with has_hotpluggable_cpus flag David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 40/43] hw/net/spapr_llan: 6 byte mac address device tree entry David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 41/43] target-ppc: fix Book-E TLB matching David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 42/43] hw/ppc/spapr: Check for valid page size when hot plugging memory David Gibson
2017-02-22  6:33 ` [Qemu-devel] [PULL 43/43] hw/ppc/ppc405_uc.c: Avoid integer overflows David Gibson
2017-02-22  7:29 ` [Qemu-devel] [PULL 00/43] ppc-for-2.9 queue 20170222 no-reply
2017-02-24 12:47 ` Peter Maydell

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=20170222063348.32176-36-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --cc=imammedo@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.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 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.