[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState |
Date: |
Wed, 05 Dec 2012 15:48:10 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 |
Am 04.12.2012 14:19, schrieb Eduardo Habkost:
> From: Igor Mammedov <address@hidden>
>
> Signed-off-by: Igor Mammedov <address@hidden>
> [ehabkost: change CPU type declaration to hae TYPE_DEVICE as parent]
> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
> Yes, there is "changelog" data before the "---" mark, but I believe that
> in this case they are important to indicate authorship and the scope of
> the Signed-off-by lines (so they need to get into the git commit
> message).
> ---
> include/qemu/cpu.h | 6 +++---
> qom/cpu.c | 3 ++-
> 2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h
> index 61b7698..bc004fd 100644
> --- a/include/qemu/cpu.h
> +++ b/include/qemu/cpu.h
> @@ -20,7 +20,7 @@
> #ifndef QEMU_CPU_H
> #define QEMU_CPU_H
>
> -#include "qemu/object.h"
> +#include "hw/qdev-core.h"
> #include "qemu-thread.h"
>
> /**
> @@ -46,7 +46,7 @@ typedef struct CPUState CPUState;
> */
> typedef struct CPUClass {
> /*< private >*/
> - ObjectClass parent_class;
> + DeviceClass parent_class;
> /*< public >*/
>
> void (*reset)(CPUState *cpu);
> @@ -62,7 +62,7 @@ typedef struct CPUClass {
> */
> struct CPUState {
> /*< private >*/
> - Object parent_obj;
> + DeviceState parent_obj;
> /*< public >*/
>
> struct QemuThread *thread;
> diff --git a/qom/cpu.c b/qom/cpu.c
> index 5b36046..f59db7d 100644
> --- a/qom/cpu.c
> +++ b/qom/cpu.c
> @@ -20,6 +20,7 @@
>
> #include "qemu/cpu.h"
> #include "qemu-common.h"
> +#include "hw/qdev-core.h"
>
> void cpu_reset(CPUState *cpu)
> {
> @@ -43,7 +44,7 @@ static void cpu_class_init(ObjectClass *klass, void *data)
>
> static TypeInfo cpu_type_info = {
> .name = TYPE_CPU,
> - .parent = TYPE_OBJECT,
> + .parent = TYPE_DEVICE,
> .instance_size = sizeof(CPUState),
> .abstract = true,
> .class_size = sizeof(CPUClass),
This makes the CPU a device, allowing the user to specify it with
-device. My preference would be to disable that at first[1] by setting
DeviceClass::no_user = 1.
Have you tested what happens if someone tries to hotplug a CPU device?
It may be the first device without bus...
[1] Anthony's and my idea was to handle hotplug at a higher level than
CPUState - X86Socket containing X86Core containing X86Thread or so. This
would require me (or someone) to refactor CPU_COMMON's numa_node (also
used in sPAPR), nr_cores, nr_threads (also used in mips/Malta) - in a
non-trivial way. We may need to go from CPU*State to CPUState (possible
so far) to Core to Socket, for which object_get_parent() would be
helpful. So far Object::parent is declared private.
Are we targetting to do this is two steps, using CPUState at first? Or
has one of you been investigating how involved this redesign would be?
Regards,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
- [Qemu-devel] [RFC 0/8] CPU DeviceState v9, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 2/8] qdev: qdev_create(): use error_report() instead of hw_error(), Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 4/8] libqemustub: vmstate register/unregister stubs, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 7/8] include qdev code into *-user, too, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState, Eduardo Habkost, 2012/12/04
- Re: [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState,
Andreas Färber <=
- [Qemu-devel] [RFC 3/8] libqemustub: add qemu_[un]register_reset() stubs, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 1/8] move -I$(SRC_PATH)/include compiler flag to Makefile.objs, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 5/8] libqemustub: sysbus_get_default() stub, Eduardo Habkost, 2012/12/04
- [Qemu-devel] [RFC 6/8] qdev-properties.c: separate core from the code used only by qemu-system-*, Eduardo Habkost, 2012/12/04