From: Alistair Francis <alistair.francis@xilinx.com>
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: "qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
Edgar Iglesias <edgar.iglesias@xilinx.com>,
Peter Maydell <peter.maydell@linaro.org>,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
qemu-arm <qemu-arm@nongnu.org>,
Alistair Francis <alistair.francis@xilinx.com>
Subject: Re: [Qemu-devel] [PATCH v2 2/4] xlnx-zynqmp: Make the RPU subsystem optional
Date: Wed, 25 May 2016 10:33:06 -0700 [thread overview]
Message-ID: <CAKmqyKMGFDGy9fK7FSwK4Lz3E-VowPMrY6yKL_8Kinoo3Wfzgg@mail.gmail.com> (raw)
In-Reply-To: <1464173555-12800-3-git-send-email-edgar.iglesias@gmail.com>
On Wed, May 25, 2016 at 3:52 AM, Edgar E. Iglesias
<edgar.iglesias@gmail.com> wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>
> The way we currently model the RPU subsystem is of quite
> limited use. In addition to that, it causes problems for
> KVM and for GDB debugging.
>
> Make the RPU optional by adding a has_rpu property and
> default to having it disabled.
>
> This changes the default setup from having the RPU to not
> longer having it.
>
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
Thanks,
Alistair
> ---
> hw/arm/xlnx-zynqmp.c | 62 +++++++++++++++++++++++++++-----------------
> include/hw/arm/xlnx-zynqmp.h | 2 ++
> 2 files changed, 40 insertions(+), 24 deletions(-)
>
> diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
> index 965a250..3a8af6a 100644
> --- a/hw/arm/xlnx-zynqmp.c
> +++ b/hw/arm/xlnx-zynqmp.c
> @@ -83,6 +83,41 @@ static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index)
> return GIC_NUM_SPI_INTR + cpu_nr * GIC_INTERNAL + ppi_index;
> }
>
> +static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu,
> + Error **errp)
> +{
> + Error *err = NULL;
> + int i;
> +
> + for (i = 0; i < XLNX_ZYNQMP_NUM_RPU_CPUS; i++) {
> + char *name;
> +
> + object_initialize(&s->rpu_cpu[i], sizeof(s->rpu_cpu[i]),
> + "cortex-r5-" TYPE_ARM_CPU);
> + object_property_add_child(OBJECT(s), "rpu-cpu[*]",
> + OBJECT(&s->rpu_cpu[i]), &error_abort);
> +
> + name = object_get_canonical_path_component(OBJECT(&s->rpu_cpu[i]));
> + if (strcmp(name, boot_cpu)) {
> + /* Secondary CPUs start in PSCI powered-down state */
> + object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true,
> + "start-powered-off", &error_abort);
> + } else {
> + s->boot_cpu_ptr = &s->rpu_cpu[i];
> + }
> + g_free(name);
> +
> + object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "reset-hivecs",
> + &error_abort);
> + object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "realized",
> + &err);
> + if (err) {
> + error_propagate(errp, err);
> + return;
> + }
> + }
> +}
> +
> static void xlnx_zynqmp_init(Object *obj)
> {
> XlnxZynqMPState *s = XLNX_ZYNQMP(obj);
> @@ -95,13 +130,6 @@ static void xlnx_zynqmp_init(Object *obj)
> &error_abort);
> }
>
> - for (i = 0; i < XLNX_ZYNQMP_NUM_RPU_CPUS; i++) {
> - object_initialize(&s->rpu_cpu[i], sizeof(s->rpu_cpu[i]),
> - "cortex-r5-" TYPE_ARM_CPU);
> - object_property_add_child(obj, "rpu-cpu[*]", OBJECT(&s->rpu_cpu[i]),
> - &error_abort);
> - }
> -
> object_property_add_link(obj, "ddr-ram", TYPE_MEMORY_REGION,
> (Object **)&s->ddr_ram,
> qdev_prop_allow_set_link_before_realize,
> @@ -260,23 +288,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
> qdev_connect_gpio_out(DEVICE(&s->apu_cpu[i]), 1, irq);
> }
>
> - for (i = 0; i < XLNX_ZYNQMP_NUM_RPU_CPUS; i++) {
> - char *name;
> -
> - name = object_get_canonical_path_component(OBJECT(&s->rpu_cpu[i]));
> - if (strcmp(name, boot_cpu)) {
> - /* Secondary CPUs start in PSCI powered-down state */
> - object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true,
> - "start-powered-off", &error_abort);
> - } else {
> - s->boot_cpu_ptr = &s->rpu_cpu[i];
> - }
> - g_free(name);
> -
> - object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "reset-hivecs",
> - &error_abort);
> - object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "realized",
> - &err);
> + if (s->has_rpu) {
> + xlnx_zynqmp_create_rpu(s, boot_cpu, &err);
> if (err) {
> error_propagate(errp, err);
> return;
> @@ -373,6 +386,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
> static Property xlnx_zynqmp_props[] = {
> DEFINE_PROP_STRING("boot-cpu", XlnxZynqMPState, boot_cpu),
> DEFINE_PROP_BOOL("secure", XlnxZynqMPState, secure, false),
> + DEFINE_PROP_BOOL("has_rpu", XlnxZynqMPState, has_rpu, false),
> DEFINE_PROP_END_OF_LIST()
> };
>
> diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
> index 38d4c8c..68f6eb0 100644
> --- a/include/hw/arm/xlnx-zynqmp.h
> +++ b/include/hw/arm/xlnx-zynqmp.h
> @@ -87,6 +87,8 @@ typedef struct XlnxZynqMPState {
>
> /* Has the ARM Security extensions? */
> bool secure;
> + /* Has the RPU subsystem? */
> + bool has_rpu;
> } XlnxZynqMPState;
>
> #define XLNX_ZYNQMP_H
> --
> 2.5.0
>
>
next prev parent reply other threads:[~2016-05-25 17:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-25 10:52 [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Fix various issues with KVM runs Edgar E. Iglesias
2016-05-25 10:52 ` [Qemu-devel] [PATCH v2 1/4] xlnx-zynqmp: Add a secure prop to en/disable ARM Security Extensions Edgar E. Iglesias
2016-05-25 17:22 ` Alistair Francis
2016-05-25 10:52 ` [Qemu-devel] [PATCH v2 2/4] xlnx-zynqmp: Make the RPU subsystem optional Edgar E. Iglesias
2016-05-25 17:33 ` Alistair Francis [this message]
2016-05-25 10:52 ` [Qemu-devel] [PATCH v2 3/4] xlnx-zynqmp: Delay realization of GIC until post CPU realization Edgar E. Iglesias
2016-05-25 17:35 ` Alistair Francis
2016-05-25 10:52 ` [Qemu-devel] [PATCH v2 4/4] xlnx-zynqmp: Use the in kernel GIC model for KVM runs Edgar E. Iglesias
2016-05-25 17:36 ` Alistair Francis
2016-06-03 18:37 ` [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Fix various issues with " Peter Maydell
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=CAKmqyKMGFDGy9fK7FSwK4Lz3E-VowPMrY6yKL_8Kinoo3Wfzgg@mail.gmail.com \
--to=alistair.francis@xilinx.com \
--cc=crosthwaite.peter@gmail.com \
--cc=edgar.iglesias@gmail.com \
--cc=edgar.iglesias@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--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).