From: Igor Mammedov <imammedo@redhat.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com,
yang.z.zhang@intel.com, ehabkost@redhat.com, mst@redhat.com,
jan.kiszka@siemens.com, stefano.stabellini@eu.citrix.com,
claudio.fontana@huawei.com, qemu-devel@nongnu.org,
aderumier@odiso.com, armbru@redhat.com, blauwirbel@gmail.com,
quintela@redhat.com, alex.williamson@redhat.com,
kraxel@redhat.com, anthony.perard@citrix.com,
pbonzini@redhat.com, lcapitulino@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 07/12] target-i386: Add ICC_BUS and attach apic, kvmvapic and cpu to it
Date: Thu, 4 Apr 2013 14:52:01 +0200 [thread overview]
Message-ID: <20130404145201.16b4f2ad@thinkpad.mammed.net> (raw)
In-Reply-To: <515D5FBE.4040608@suse.de>
On Thu, 04 Apr 2013 13:10:54 +0200
Andreas Färber <afaerber@suse.de> wrote:
> Am 28.03.2013 11:55, schrieb Igor Mammedov:
> > On Wed, 27 Mar 2013 11:57:53 +0100
> > Paolo Bonzini <pbonzini@redhat.com> wrote:
> >
> >> Il 21/03/2013 15:28, Igor Mammedov ha scritto:
> >>> +static BusState *icc_bus;
> >>> +
> >>> +BusState *get_icc_bus(void)
> >>> +{
> >>> + if (icc_bus == NULL) {
> >>> + icc_bus = g_malloc0(icc_bus_info.instance_size);
> >>> + qbus_create_inplace(icc_bus, TYPE_ICC_BUS, NULL, "icc-bus");
> >>> + icc_bus->allow_hotplug = 1;
> >>> + OBJECT(icc_bus)->free = g_free;
> >>
> >> You can just use qbus_create.
> >>
> >>> + object_property_add_child(container_get(qdev_get_machine(),
> >>> + "/unattached"),
> >>
> >> Please put it straight under /machine, not /unattached.
> >
> > sure
> >
> >>
> >> But actually, you lack a device that instantiates the bus. That device
> >> would be a simple container device similar hw/a15mpcore.c, and would
> >
> > About a year ago something like that device was proposed "cpu_sockets", but
> > there was suggestion to drop it:
> > http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg02157.html
> > So I've opted in favor of parent-less bus, but I could create it
> > explicitly at board level as you suggest.
> >
> > However having parent sysbus device for icc-bus will allow to see it via
> > monitor info qtree
>
> As I said on IRC, info qtree should not influence our design decisions.
> All that's missing is a convenient script that pretty-prints the output
> from the QOM graph using qom-list and qom-get in a non-interactive way.
> Whether CPUs or busses are shown in info qtree is totally irrelevant IMO
> by now.
>
> > and reset on SysBus could be propagated through it as well,
> > it may be good to add it later.
>
> What exactly is this ICC bus needed for? Is it just a workaround for
> qdev_init() or something making assumptions about busses and falling
> back to SysBus otherwise? Or about avoiding SysBus?
SysBus doesn't allow hotplug on it, I've asked Anthony on IRC and short answer
was do not touch what doesn't exists. Hence hotplug-able bus that exists
on real hw.
x86 hw had ICC bus some time ago through which APICs, IOAPICs and CPUs
communicated. So here it is.
More close to the code:
- device_add assigns SysBus to any bus-less device, therefore CPU hits
assertion because hotplug is not allowed on bus.
- when x86 CPU is realizing, it creates APIC and possible kvmvapic, which are
SysBus devices presently, it triggers the same assert as above.
>
> And where would it sit if be hosted you think of something like Qseven
> modules - on the board or on the module? I don't see pc.c being touched
> here at all...
I've reworked it quite a bit to Paolo's suggestions. now board creates
following QOM tree:
/machine/icc-bridge<SYS_BUS_DEVICE>/--->child<icc-bus>/->link<apic[..]>
| |
| ->link<kvmvapic[..]>
| |
| ->link<cpu[..]
| |
| ->link<ioapic>
->child<ioapic>
where icc-bridge is created by board and serves as a parent, which creates
icc-bus, ioapic and takes care about mapping memory regions registered by
*apic* devices.
>
>
> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
--
Regards,
Igor
next prev parent reply other threads:[~2013-04-04 12:52 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-21 14:28 [Qemu-devel] [RFC 00/12] target-i386: CPU hot-add with cpu_set QMP command Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 01/12] target-i386: consolidate error propagation in x86_cpu_realizefn() Igor Mammedov
2013-03-27 10:21 ` Paolo Bonzini
2013-04-01 20:00 ` Eduardo Habkost
2013-03-21 14:28 ` [Qemu-devel] [PATCH 02/12] target-i386: split APIC creation from initialization " Igor Mammedov
2013-04-04 8:59 ` Andreas Färber
2013-04-04 9:56 ` Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 03/12] target-i386: split out CPU creation and features parsing into cpu_x86_create() Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 04/12] target-i386: introduce apic-id property Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 05/12] target-i386: push hot-plugged VCPU state to KVM and unstop it Igor Mammedov
2013-03-27 11:01 ` Paolo Bonzini
2013-03-27 12:12 ` Igor Mammedov
2013-03-27 12:17 ` Andreas Färber
2013-03-27 13:27 ` Igor Mammedov
2013-03-27 14:30 ` Andreas Färber
2013-03-27 15:16 ` Igor Mammedov
2013-03-27 15:20 ` Paolo Bonzini
2013-03-27 19:46 ` Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 05/14] cpu: Pass CPUState to *cpu_synchronize_post*() Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 06/14] cpu: call cpu_synchronize_post_init() from CPUClass.realize() if hotplugged Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 07/14] cpu: introduce CPUClass.resume() method Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 06/12] target-i386: replace FROM_SYSBUS() with QOM type cast Igor Mammedov
2013-03-27 10:22 ` Paolo Bonzini
2013-04-04 9:03 ` Andreas Färber
2013-04-04 9:59 ` Igor Mammedov
2013-04-04 10:05 ` Andreas Färber
2013-04-04 10:22 ` Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 07/12] target-i386: Add ICC_BUS and attach apic, kvmvapic and cpu to it Igor Mammedov
2013-03-27 10:57 ` Paolo Bonzini
2013-03-28 10:55 ` Igor Mammedov
2013-03-29 7:22 ` li guang
2013-03-29 8:12 ` Igor Mammedov
2013-04-04 11:10 ` Andreas Färber
2013-04-04 12:52 ` Igor Mammedov [this message]
2013-03-21 14:28 ` [Qemu-devel] [PATCH 08/12] introduce CPU hot-plug notifier Igor Mammedov
2013-03-27 11:06 ` Paolo Bonzini
2013-03-27 15:24 ` Igor Mammedov
2013-03-27 15:36 ` Paolo Bonzini
2013-03-21 14:28 ` [Qemu-devel] [PATCH 09/12] rtc: update rtc_cmos on CPU hot-plug Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 10/12] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest Igor Mammedov
2013-03-27 10:47 ` Paolo Bonzini
2013-03-21 14:28 ` [Qemu-devel] [PATCH 11/12] qmp: add cpu_set qmp command Igor Mammedov
2013-03-22 2:44 ` Eric Blake
2013-03-25 15:35 ` [Qemu-devel] [PATCH 11/12 v2] qmp: add cpu-set " Igor Mammedov
2013-03-25 20:09 ` Luiz Capitulino
2013-03-25 20:22 ` Eric Blake
2013-03-26 13:43 ` Igor Mammedov
2013-03-26 14:02 ` Luiz Capitulino
2013-03-26 14:38 ` Eric Blake
2013-03-27 10:36 ` [Qemu-devel] [PATCH 11/12] qmp: add cpu_set " Paolo Bonzini
2013-03-21 14:28 ` [Qemu-devel] [PATCH 12/12] target-i386: implement CPU hot-add Igor Mammedov
2013-03-22 2:46 ` Eric Blake
2013-03-25 15:31 ` Igor Mammedov
2013-03-27 11:19 ` Paolo Bonzini
2013-04-03 17:58 ` Igor Mammedov
2013-04-03 18:10 ` Eduardo Habkost
2013-04-03 18:59 ` Igor Mammedov
2013-04-03 19:27 ` Eduardo Habkost
2013-04-03 20:09 ` Igor Mammedov
2013-04-03 20:57 ` Eduardo Habkost
2013-04-03 18:22 ` Andreas Färber
2013-04-03 19:01 ` Igor Mammedov
2013-03-21 14:44 ` [Qemu-devel] [RFC 00/12] target-i386: CPU hot-add with cpu_set QMP command Eric Blake
2013-03-21 15:38 ` Igor Mammedov
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=20130404145201.16b4f2ad@thinkpad.mammed.net \
--to=imammedo@redhat.com \
--cc=aderumier@odiso.com \
--cc=afaerber@suse.de \
--cc=alex.williamson@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=anthony.perard@citrix.com \
--cc=armbru@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=claudio.fontana@huawei.com \
--cc=ehabkost@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=stefano.stabellini@eu.citrix.com \
--cc=yang.z.zhang@intel.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 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).