mirror of https://github.com/xqemu/xqemu.git
s390x: get rid of cpu_states and use possible_cpus instead
Now that we have possible_cpus, we can get rid of the global variable and rewrite s390_cpu_addr2state() to use it. Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20170913132417.24384-20-david@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
4dc3b15188
commit
2b44178d87
|
@ -36,23 +36,26 @@
|
||||||
#include "qapi/qmp/qerror.h"
|
#include "qapi/qmp/qerror.h"
|
||||||
#include "hw/nmi.h"
|
#include "hw/nmi.h"
|
||||||
|
|
||||||
static S390CPU **cpu_states;
|
|
||||||
|
|
||||||
S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
|
S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
|
||||||
{
|
{
|
||||||
if (cpu_addr >= max_cpus) {
|
static MachineState *ms;
|
||||||
return NULL;
|
|
||||||
|
if (!ms) {
|
||||||
|
ms = MACHINE(qdev_get_machine());
|
||||||
|
g_assert(ms->possible_cpus);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fast lookup via CPU ID */
|
/* CPU address corresponds to the core_id and the index */
|
||||||
return cpu_states[cpu_addr];
|
if (cpu_addr >= ms->possible_cpus->len) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return S390_CPU(ms->possible_cpus->cpus[cpu_addr].cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void s390_init_cpus(MachineState *machine)
|
static void s390_init_cpus(MachineState *machine)
|
||||||
{
|
{
|
||||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||||
int i;
|
int i;
|
||||||
gchar *name;
|
|
||||||
|
|
||||||
if (machine->cpu_model == NULL) {
|
if (machine->cpu_model == NULL) {
|
||||||
machine->cpu_model = s390_default_cpu_model_name();
|
machine->cpu_model = s390_default_cpu_model_name();
|
||||||
|
@ -63,18 +66,6 @@ static void s390_init_cpus(MachineState *machine)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
cpu_states = g_new0(S390CPU *, max_cpus);
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize possible_cpus */
|
/* initialize possible_cpus */
|
||||||
mc->possible_cpu_arch_ids(machine);
|
mc->possible_cpu_arch_ids(machine);
|
||||||
|
|
||||||
|
@ -312,15 +303,8 @@ static void ccw_init(MachineState *machine)
|
||||||
static void s390_cpu_plug(HotplugHandler *hotplug_dev,
|
static void s390_cpu_plug(HotplugHandler *hotplug_dev,
|
||||||
DeviceState *dev, Error **errp)
|
DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
gchar *name;
|
|
||||||
MachineState *ms = MACHINE(hotplug_dev);
|
MachineState *ms = MACHINE(hotplug_dev);
|
||||||
S390CPU *cpu = S390_CPU(dev);
|
S390CPU *cpu = S390_CPU(dev);
|
||||||
CPUState *cs = CPU(dev);
|
|
||||||
|
|
||||||
name = g_strdup_printf("cpu[%i]", cpu->env.core_id);
|
|
||||||
object_property_set_link(OBJECT(hotplug_dev), OBJECT(cs), name,
|
|
||||||
errp);
|
|
||||||
g_free(name);
|
|
||||||
|
|
||||||
g_assert(!ms->possible_cpus->cpus[cpu->env.core_id].cpu);
|
g_assert(!ms->possible_cpus->cpus[cpu->env.core_id].cpu);
|
||||||
ms->possible_cpus->cpus[cpu->env.core_id].cpu = OBJECT(dev);
|
ms->possible_cpus->cpus[cpu->env.core_id].cpu = OBJECT(dev);
|
||||||
|
|
Loading…
Reference in New Issue