From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>,
qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState
Date: Wed, 05 Dec 2012 15:48:10 +0100 [thread overview]
Message-ID: <50BF5EAA.1070500@suse.de> (raw)
In-Reply-To: <1354627180-25704-9-git-send-email-ehabkost@redhat.com>
Am 04.12.2012 14:19, schrieb Eduardo Habkost:
> From: Igor Mammedov <imammedo@redhat.com>
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> [ehabkost: change CPU type declaration to hae TYPE_DEVICE as parent]
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> 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
next prev parent reply other threads:[~2012-12-05 14:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-04 13:19 [Qemu-devel] [RFC 0/8] CPU DeviceState v9 Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 1/8] move -I$(SRC_PATH)/include compiler flag to Makefile.objs Eduardo Habkost
2012-12-04 16:03 ` Andreas Färber
2012-12-04 16:22 ` Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 2/8] qdev: qdev_create(): use error_report() instead of hw_error() Eduardo Habkost
2012-12-04 16:12 ` Andreas Färber
2012-12-04 13:19 ` [Qemu-devel] [RFC 3/8] libqemustub: add qemu_[un]register_reset() stubs Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 4/8] libqemustub: vmstate register/unregister stubs Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 5/8] libqemustub: sysbus_get_default() stub Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 6/8] qdev-properties.c: separate core from the code used only by qemu-system-* Eduardo Habkost
2012-12-04 18:55 ` Blue Swirl
2012-12-04 19:01 ` Eduardo Habkost
2012-12-04 19:04 ` Blue Swirl
2012-12-04 19:05 ` Andreas Färber
2012-12-04 19:13 ` Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 7/8] include qdev code into *-user, too Eduardo Habkost
2012-12-04 13:19 ` [Qemu-devel] [RFC 8/8] qom: make CPU a child of DeviceState Eduardo Habkost
2012-12-05 14:48 ` Andreas Färber [this message]
2012-12-05 15:52 ` Eduardo Habkost
2012-12-04 15:59 ` [Qemu-devel] [RFC 0/8] CPU DeviceState v9 Andreas Färber
2012-12-04 16:40 ` Eduardo Habkost
2012-12-05 14:50 ` Andreas Färber
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=50BF5EAA.1070500@suse.de \
--to=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).