qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm <qemu-arm@nongnu.org>, QEMU Developers <qemu-devel@nongnu.org>
Cc: "patches@linaro.org" <patches@linaro.org>
Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH 05/19] armv7m: Forward idau property to CPU object
Date: Thu, 1 Mar 2018 16:00:17 +0000	[thread overview]
Message-ID: <CAFEAcA-8VnzF5CwJsbfYxUOX87zH_iLS6gM2r1e6PochemNVQQ@mail.gmail.com> (raw)
In-Reply-To: <20180220180325.29818-6-peter.maydell@linaro.org>

On 20 February 2018 at 18:03, Peter Maydell <peter.maydell@linaro.org> wrote:
> Create an "idau" property on the armv7m container object which
> we can forward to the CPU object. Annoyingly, we can't use
> object_property_add_alias() because the CPU object we want to
> forward to doesn't exist until the armv7m container is realized.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  include/hw/arm/armv7m.h | 3 +++
>  hw/arm/armv7m.c         | 7 +++++++
>  2 files changed, 10 insertions(+)
>
> diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h
> index 35ab757264..5c3f406ccc 100644
> --- a/include/hw/arm/armv7m.h
> +++ b/include/hw/arm/armv7m.h
> @@ -12,6 +12,7 @@
>
>  #include "hw/sysbus.h"
>  #include "hw/intc/armv7m_nvic.h"
> +#include "target/arm/idau.h"
>
>  #define TYPE_BITBAND "ARM,bitband-memory"
>  #define BITBAND(obj) OBJECT_CHECK(BitBandState, (obj), TYPE_BITBAND)
> @@ -40,6 +41,7 @@ typedef struct {
>   * + Property "memory": MemoryRegion defining the physical address space
>   *   that CPU accesses see. (The NVIC, bitbanding and other CPU-internal
>   *   devices will be automatically layered on top of this view.)
> + * + Property "idau": IDAU interface (forwarded to CPU object)
>   */
>  typedef struct ARMv7MState {
>      /*< private >*/
> @@ -58,6 +60,7 @@ typedef struct ARMv7MState {
>      char *cpu_type;
>      /* MemoryRegion the board provides to us (with its devices, RAM, etc) */
>      MemoryRegion *board_memory;
> +    Object *idau;
>  } ARMv7MState;
>
>  #endif
> diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> index facc536b07..189066812c 100644
> --- a/hw/arm/armv7m.c
> +++ b/hw/arm/armv7m.c
> @@ -19,6 +19,7 @@
>  #include "sysemu/qtest.h"
>  #include "qemu/error-report.h"
>  #include "exec/address-spaces.h"
> +#include "target/arm/idau.h"
>
>  /* Bitbanded IO.  Each word corresponds to a single bit.  */
>
> @@ -162,6 +163,11 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
>
>      object_property_set_link(OBJECT(s->cpu), OBJECT(&s->container), "memory",
>                               &error_abort);
> +    object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err);
> +    if (err != NULL) {
> +        error_propagate(errp, err);
> +        return;
> +    }

This turns out to not quite be right -- if the CPU doesn't have
the "idau" property (ie it is a v7M CPU like the cortex-m3) then
the object_property_set_link will fail. This causes 'make check'
to fail when it tries to run the M3/M4 boards with
"qemu-system-aarch64: Property '.init-svtor' not found"

The fix is to squash in this:

diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index 149aa07cd5..70871eb139 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -163,10 +163,12 @@ static void armv7m_realize(DeviceState *dev, Error **errp)

     object_property_set_link(OBJECT(s->cpu), OBJECT(&s->container), "memory",
                              &error_abort);
-    object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err);
-    if (err != NULL) {
-        error_propagate(errp, err);
-        return;
+    if (object_property_find(OBJECT(s->cpu), "idau", NULL)) {
+        object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err);
+        if (err != NULL) {
+            error_propagate(errp, err);
+            return;
+        }
     }
     object_property_set_uint(OBJECT(s->cpu), s->init_svtor,
"init-svtor", &err);
     if (err != NULL) {

which I propose to do in putting the patchset into target-arm.next.

Similarly for init-svtor in the patch later in this series which adds that.

thanks
-- PMM

  parent reply	other threads:[~2018-03-01 16:00 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-20 18:03 [Qemu-devel] [PATCH 00/19] Add Cortex-M33 and mps2-an505 board model Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 01/19] loader: Add new load_ramdisk_as() Peter Maydell
2018-02-24  4:40   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 02/19] hw/arm/boot: Honour CPU's address space for image loads Peter Maydell
2018-02-24  4:56   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 03/19] hw/arm/armv7m: " Peter Maydell
2018-02-24  5:08   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 04/19] target/arm: Define an IDAU interface Peter Maydell
2018-02-27 19:32   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 05/19] armv7m: Forward idau property to CPU object Peter Maydell
2018-02-27 19:53   ` Richard Henderson
2018-03-01 16:00   ` Peter Maydell [this message]
2018-02-20 18:03 ` [Qemu-devel] [PATCH 06/19] target/arm: Define init-svtor property for the reset secure VTOR value Peter Maydell
2018-02-27 20:18   ` Richard Henderson
2018-03-01 12:40     ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 07/19] armv7m: Forward init-svtor property to CPU object Peter Maydell
2018-02-27 20:26   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 08/19] target/arm: Add Cortex-M33 Peter Maydell
2018-02-27 20:47   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 09/19] hw/misc/unimp: Move struct to header file Peter Maydell
2018-02-20 18:27   ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-02-27 20:50   ` [Qemu-devel] " Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 10/19] include/hw/or-irq.h: Add missing include guard Peter Maydell
2018-02-20 18:25   ` Philippe Mathieu-Daudé
2018-02-27 20:51   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 11/19] qdev: Add new qdev_init_gpio_in_named_with_opaque() Peter Maydell
2018-02-20 18:26   ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-02-27 20:52   ` [Qemu-devel] " Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 12/19] hw/core/split-irq: Device that splits IRQ lines Peter Maydell
2018-02-27 20:58   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 13/19] hw/misc/mps2-fpgaio: FPGA control block for MPS2 AN505 Peter Maydell
2018-02-27 21:11   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 14/19] hw/misc/tz-ppc: Model TrustZone peripheral protection controller Peter Maydell
2018-02-27 21:36   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 15/19] hw/misc/iotkit-secctl: Arm IoT Kit security controller initial skeleton Peter Maydell
2018-02-27 21:44   ` Richard Henderson
2018-03-01 12:44     ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 16/19] hw/misc/iotkit-secctl: Add handling for PPCs Peter Maydell
2018-02-27 21:54   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 17/19] hw/misc/iotkit-secctl: Add remaining simple registers Peter Maydell
2018-02-27 22:00   ` Richard Henderson
2018-03-01 12:47     ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 18/19] hw/arm/iotkit: Model Arm IOT Kit Peter Maydell
2018-02-27 22:49   ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 19/19] mps2-an505: New board model: MPS2 with AN505 Cortex-M33 FPGA image Peter Maydell
2018-02-21 10:30   ` Igor Mammedov
2018-03-01 12:50     ` Peter Maydell
2018-02-27 22:50   ` Richard Henderson
2018-02-22 19:03 ` [Qemu-devel] [PATCH 00/19] Add Cortex-M33 and mps2-an505 board model no-reply
2018-02-22 19:11   ` Peter Maydell
2018-02-22 21:55     ` Eric Blake
2018-02-24  6:19 ` no-reply

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=CAFEAcA-8VnzF5CwJsbfYxUOX87zH_iLS6gM2r1e6PochemNVQQ@mail.gmail.com \
    --to=peter.maydell@linaro.org \
    --cc=patches@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).