[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] cpu: Register QOM links at /machine/cpus/<index>
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PATCH] cpu: Register QOM links at /machine/cpus/<index> |
Date: |
Thu, 30 Apr 2015 16:19:07 -0300 |
This will provide a predictable path for the CPU objects, and a more
powerful alternative for the query-cpus QMP command, as now every QOM
property on CPU objects can be easily queried.
Signed-off-by: Eduardo Habkost <address@hidden>
---
Note that this doesn't replace any future topology enumeration
mechanisms we may choose to implement. It just replaces the existing
topology-unaware VCPU enumeration mechanism that is query-cpus.
Reference to previous discussion:
Date: Thu, 23 Apr 2015 10:17:36 -0300
From: Eduardo Habkost <address@hidden>
Subject: Re: [Qemu-devel] cpu modelling and hotplug (was: [PATCH RFC 0/4]
target-i386: PC socket/core/thread modeling, part 1)
Message-ID: <address@hidden>
---
exec.c | 16 ++++++++++++++++
include/qom/cpu.h | 3 +++
2 files changed, 19 insertions(+)
diff --git a/exec.c b/exec.c
index ae37b98..8bdfa65 100644
--- a/exec.c
+++ b/exec.c
@@ -519,6 +519,20 @@ void tcg_cpu_address_space_init(CPUState *cpu,
AddressSpace *as)
}
#endif
+static void cpu_add_qom_link(CPUState *cpu)
+{
+#if !defined(CONFIG_USER_ONLY)
+ Object *cobj = OBJECT(cpu);
+ Object *cpu_container = container_get(OBJECT(current_machine), "/cpus");
+ char *path = g_strdup_printf("%d", cpu->cpu_index);
+
+ cpu->self = cobj;
+ object_property_add_link(cpu_container, path, TYPE_CPU, &cpu->self, NULL,
+ OBJ_PROP_LINK_UNREF_ON_RELEASE, &error_abort);
+ g_free(path);
+#endif
+}
+
void cpu_exec_init(CPUArchState *env)
{
CPUState *cpu = ENV_GET_CPU(env);
@@ -558,6 +572,8 @@ void cpu_exec_init(CPUArchState *env)
if (cc->vmsd != NULL) {
vmstate_register(NULL, cpu_index, cc->vmsd, cpu);
}
+
+ cpu_add_qom_link(cpu);
}
#if defined(CONFIG_USER_ONLY)
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 39f0f19..c253420 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -246,6 +246,9 @@ struct CPUState {
DeviceState parent_obj;
/*< public >*/
+ /* Needed for the /machine/cpus/<index> link */
+ Object *self;
+
int nr_cores;
int nr_threads;
int numa_node;
--
2.1.0
- [Qemu-devel] [PATCH] cpu: Register QOM links at /machine/cpus/<index>,
Eduardo Habkost <=