From: Peter Maydell <peter.maydell@linaro.org>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Luc Michel" <luc.michel@greensocs.com>,
"Alistair Francis" <alistair@alistair23.me>,
"Mark Burton" <mark.burton@greensocs.com>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Sai Pavan Boddu" <saipava@xilinx.com>,
"Edgar Iglesias" <edgari@xilinx.com>,
qemu-arm <qemu-arm@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v7 01/16] hw/cpu: introduce CPU clusters
Date: Fri, 30 Nov 2018 16:52:31 +0000 [thread overview]
Message-ID: <CAFEAcA8D7ZjO059Sgrx-4i0iT+V3gxT4f=DvdmUAJS7KomtyOg@mail.gmail.com> (raw)
In-Reply-To: <20181126132731.GJ18284@habkost.net>
On Mon, 26 Nov 2018 at 13:27, Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> On Sun, Nov 25, 2018 at 10:27:04PM +0100, Philippe Mathieu-Daudé wrote:
> > Hi Eduardo,
> >
> > On 23/11/18 19:10, Eduardo Habkost wrote:
> > > If you really want to do this and assign cluster_id
> > > automatically, please do it on realize, where it won't have
> > > unexpected side-effects after a simple `qom-list-properties` QMP
> > > command.
> >
> > This looks clean enough to me.
> > Do you prefer we don't use static auto_increment at all?
>
> I would prefer to avoid the static variable if possible, but I
> won't reject it if the alternatives make the API too complex to
> use.
I guess the alternative would be to require the cluster ID
to be a QOM property on the cluster object. Usage would then
be something like
object_initialize_child(OBJECT(s), "rpu-cluster", &s->rpu_cluster,
sizeof(s->rpu_cluster), TYPE_CPU_CLUSTER,
&error_abort, NULL);
object_property_set_int(OBJECT(s), 1, "cluster-id", &error_abort);
qdev_init_nofail(DEVICE(&s->rpu_cluster));
(ie one extra line setting the cluster ID explicitly).
SoC objects can probably reasonably assume that they are
the only SoC in the system, ie that they can just assign
cluster IDs themselves). If that turns out not to be true
we can make the SoC take a property to specify a cluster ID
base or something.
I guess if we've been bitten by cpu-ID auto-assignment
in the past, starting out with "user picks the cluster ID"
would be safer, and it's not too much pain at the callsite.
Plus it avoids the gdbstub changing its mind about which
order the cluster "processes" appear in if we refactor the
board code.
> In either case, I'd like to ensure the caveats of the cluster_id
> field are clearly documented: no guarantees about ordering or
> predictability, making it not appropriate for external
> interfaces.
The gdb stub is sort of an external interface, of course...
Luc: what are the requirements on boards using CPU cluster
objects? I assume these are both OK:
* does not use cluster objects at all
(the gdbstub puts all the CPUs in one process?)
* all CPUs created are in some CPU cluster
(the gdbstub uses one process per CPU cluster)
but what about
* some CPUs are created in a CPU cluster, but some
are "loose", not in any cluster at all
?
Is that just invalid, or do the "loose" CPUs end up in
a default cluster (gdbstub process), or do they get
one cluster each?
If it's invalid (which doesn't seem like a bad idea),
is there an assert somewhere so that getting it wrong
results in the board failing to start (ie a "make check"
failure) ?
thanks
-- PMM
next prev parent reply other threads:[~2018-11-30 16:52 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-23 9:17 [Qemu-devel] [PATCH v7 00/16] gdbstub: support for the multiprocess extension Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 01/16] hw/cpu: introduce CPU clusters Luc Michel
2018-11-23 18:10 ` Eduardo Habkost
2018-11-23 18:14 ` Peter Maydell
2018-11-23 18:24 ` Eduardo Habkost
2018-11-23 18:53 ` Peter Maydell
2018-11-23 22:38 ` Eduardo Habkost
2018-11-25 21:27 ` Philippe Mathieu-Daudé
2018-11-26 13:27 ` Eduardo Habkost
2018-11-30 16:52 ` Peter Maydell [this message]
2018-11-30 18:14 ` Eduardo Habkost
2018-12-03 11:20 ` Luc Michel
2018-12-03 11:23 ` Peter Maydell
2018-12-03 14:09 ` Luc Michel
2018-12-04 18:06 ` Eduardo Habkost
2018-12-04 18:24 ` Peter Maydell
2018-12-04 19:05 ` Eduardo Habkost
2018-12-04 19:16 ` Peter Maydell
2018-12-04 19:45 ` Eduardo Habkost
2018-12-05 14:02 ` Luc Michel
2018-12-05 16:47 ` Eduardo Habkost
2018-12-05 13:44 ` Luc Michel
2018-12-05 13:47 ` Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 02/16] gdbstub: introduce GDB processes Luc Michel
2018-11-25 20:58 ` Philippe Mathieu-Daudé
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 03/16] gdbstub: add multiprocess support to '?' packets Luc Michel
2018-11-25 21:22 ` Philippe Mathieu-Daudé
2018-12-06 12:27 ` Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 04/16] gdbstub: add multiprocess support to 'H' and 'T' packets Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 05/16] gdbstub: add multiprocess support to vCont packets Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 06/16] gdbstub: add multiprocess support to 'sC' packets Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 07/16] gdbstub: add multiprocess support to (f|s)ThreadInfo and ThreadExtraInfo Luc Michel
2018-11-30 10:35 ` Edgar E. Iglesias
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 08/16] gdbstub: add multiprocess support to Xfer:features:read: Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 09/16] gdbstub: add multiprocess support to gdb_vm_state_change() Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 10/16] gdbstub: add multiprocess support to 'D' packets Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 11/16] gdbstub: add support for extended mode packet Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 12/16] gdbstub: add support for vAttach packets Luc Michel
2018-11-25 21:00 ` Philippe Mathieu-Daudé
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 13/16] gdbstub: processes initialization on new peer connection Luc Michel
2018-11-25 21:02 ` Philippe Mathieu-Daudé
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 14/16] gdbstub: gdb_set_stop_cpu: ignore request when process is not attached Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 15/16] gdbstub: add multiprocess extension support Luc Michel
2018-11-23 9:17 ` [Qemu-devel] [PATCH v7 16/16] arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters Luc Michel
2018-11-25 21:10 ` Philippe Mathieu-Daudé
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='CAFEAcA8D7ZjO059Sgrx-4i0iT+V3gxT4f=DvdmUAJS7KomtyOg@mail.gmail.com' \
--to=peter.maydell@linaro.org \
--cc=alistair@alistair23.me \
--cc=edgari@xilinx.com \
--cc=ehabkost@redhat.com \
--cc=f4bug@amsat.org \
--cc=luc.michel@greensocs.com \
--cc=mark.burton@greensocs.com \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=saipava@xilinx.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).