qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: Damien Hedde <damien.hedde@greensocs.com>,
	Luc Michel <luc@lmichel.fr>, David Hildenbrand <david@redhat.com>,
	Alistair Francis <alistair@alistair23.me>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Peter Xu <peterx@redhat.com>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	qemu-arm <qemu-arm@nongnu.org>, Joel Stanley <joel@jms.id.au>,
	Alexandre Iooss <erdnaxe@crans.org>
Subject: Re: [PATCH for-6.2 01/25] arm: Move M-profile RAS register block into its own device
Date: Mon, 16 Aug 2021 10:16:54 +0100	[thread overview]
Message-ID: <CAFEAcA_EXxMPQjbA+rHwTPfZko_pcmw_Hi6yOXW+mXWAAkcs1g@mail.gmail.com> (raw)
In-Reply-To: <3fc10091-832a-e87c-9866-323534f6dc9e@amsat.org>

On Sun, 15 Aug 2021 at 18:30, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> +Peter/David
>
> On 8/12/21 11:33 AM, Peter Maydell wrote:
> > Currently we implement the RAS register block within the NVIC device.
> > It isn't really very tightly coupled with the NVIC proper, so instead
> > move it out into a sysbus device of its own and have the top level
> > ARMv7M container create it and map it into memory at the right
> > address.
> >
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> >  include/hw/arm/armv7m.h       |  2 +
> >  include/hw/intc/armv7m_nvic.h |  1 -
> >  include/hw/misc/armv7m_ras.h  | 37 ++++++++++++++
> >  hw/arm/armv7m.c               | 12 +++++
> >  hw/intc/armv7m_nvic.c         | 56 ---------------------
> >  hw/misc/armv7m_ras.c          | 93 +++++++++++++++++++++++++++++++++++
> >  MAINTAINERS                   |  2 +
> >  hw/misc/meson.build           |  2 +
> >  8 files changed, 148 insertions(+), 57 deletions(-)
> >  create mode 100644 include/hw/misc/armv7m_ras.h
> >  create mode 100644 hw/misc/armv7m_ras.c
>
> > diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> > index 9ce5c30cd5c..8964730d153 100644
> > --- a/hw/arm/armv7m.c
> > +++ b/hw/arm/armv7m.c
> > @@ -231,6 +231,18 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
> >      memory_region_add_subregion(&s->container, 0xe0000000,
> >                                  sysbus_mmio_get_region(sbd, 0));
> >
> > +    /* If the CPU has RAS support, create the RAS register block */
> > +    if (cpu_isar_feature(aa32_ras, s->cpu)) {
> > +        object_initialize_child(OBJECT(dev), "armv7m-ras",
> > +                                &s->ras, TYPE_ARMV7M_RAS);
> > +        sbd = SYS_BUS_DEVICE(&s->ras);
> > +        if (!sysbus_realize(sbd, errp)) {
> > +            return;
> > +        }
> > +        memory_region_add_subregion_overlap(&s->container, 0xe0005000,
> > +                                            sysbus_mmio_get_region(sbd, 0), 1);
>
> Just curious, is the overlap really needed?

Yes, because this block is currently in the middle of the
PPB-area region provided by the NVIC, and needs to take priority
over it. Once the refactoring is complete, the background-region
will also be created in this armv7m realize function, but the
RAS block still needs to go above it.

> I see the NVIC default
> region is 1 MiB wide. Aren't smaller regions returned first when
> multiple regions have same priority?

As David says, if you don't specify the priority then it's
pot-luck which one you see. Having overlaps and not setting
priorities is a QEMU bug. (We used to have some code to print
a warning about unintentionally overlapping regions, but it was
always disabled with #if 0 and we eventually deleted it in commit
b61359781958. IIRC the reason we never enabled either a warning
or an assertion was because for the PC machine's PCI devices
in particular we thought it might be possible for the guest to
map PCI devices at a silly address and generate overlaps, but
I may well have the details wrong as it was years back.)

-- PMM


  parent reply	other threads:[~2021-08-16  9:18 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-12  9:33 [PATCH for-6.2 00/25] arm: Get rid of system_clock_scale global Peter Maydell
2021-08-12  9:33 ` [PATCH for-6.2 01/25] arm: Move M-profile RAS register block into its own device Peter Maydell
2021-08-12 11:08   ` Alexandre IOOSS
2021-08-12 11:09     ` Peter Maydell
2021-08-13  0:59   ` Alistair Francis
2021-08-15 17:30   ` Philippe Mathieu-Daudé
2021-08-16  7:28     ` David Hildenbrand
2021-08-16  9:16     ` Peter Maydell [this message]
2021-08-17  8:25   ` Luc Michel
2021-08-17 10:10     ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 02/25] arm: Move systick device creation from NVIC to ARMv7M object Peter Maydell
2021-08-13  1:23   ` Alistair Francis
2021-08-17  9:24   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 03/25] arm: Move system PPB container handling to armv7m Peter Maydell
2021-08-12 11:56   ` Alexandre IOOSS
2021-08-17  9:25   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 04/25] hw/timer/armv7m_systick: Add usual QEMU interface comment Peter Maydell
2021-08-13  1:26   ` Alistair Francis
2021-08-17  9:29   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 05/25] hw/timer/armv7m_systick: Add input clocks Peter Maydell
2021-08-13  1:27   ` Alistair Francis
2021-08-17  9:32   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 06/25] hw/arm/armv7m: Create " Peter Maydell
2021-08-13  1:28   ` Alistair Francis
2021-08-17  9:34   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 07/25] armsse: Wire up systick cpuclk clock Peter Maydell
2021-08-13  1:29   ` Alistair Francis
2021-08-17  9:36   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 08/25] hw/arm/mps2.c: Connect up armv7m clocks Peter Maydell
2021-08-17  9:39   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 09/25] clock: Provide builtin multiplier/divider Peter Maydell
2021-08-12 12:08   ` Alexandre IOOSS
2021-08-12 12:22     ` Peter Maydell
2021-08-13  1:33   ` Alistair Francis
2021-08-15 16:32   ` Philippe Mathieu-Daudé
2021-08-16  9:05     ` Peter Maydell
2021-08-16  9:32       ` Philippe Mathieu-Daudé
2021-08-16  9:36         ` Peter Maydell
2021-08-16  9:58           ` Philippe Mathieu-Daudé
2021-08-15 21:27   ` Luc Michel
2021-08-17  9:59   ` Damien Hedde
2021-08-17 10:46     ` Peter Maydell
2021-08-17 14:58       ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 10/25] hw/arm: Don't allocate separate MemoryRegions in stm32 SoC realize Peter Maydell
2021-08-12 12:13   ` Alexandre IOOSS
2021-08-12 12:27     ` Peter Maydell
2021-08-15 16:37       ` Philippe Mathieu-Daudé
2021-08-13  1:34   ` Alistair Francis
2021-08-17  9:41   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 11/25] hw/arm/stm32f100: Wire up sysclk and refclk Peter Maydell
2021-08-13  1:36   ` Alistair Francis
2021-08-14  9:01   ` Alexandre IOOSS
2021-08-17  9:45   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 12/25] hw/arm/stm32f205: " Peter Maydell
2021-08-13  1:38   ` Alistair Francis
2021-08-14  9:02   ` Alexandre IOOSS
2021-08-17  9:47   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 13/25] hw/arm/stm32f405: " Peter Maydell
2021-08-13  1:37   ` Alistair Francis
2021-08-14  9:03   ` Alexandre IOOSS
2021-08-17  9:47   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 14/25] hw/arm/stm32vldiscovery: Delete trailing blank line Peter Maydell
2021-08-12 12:27   ` Alexandre IOOSS
2021-08-13  1:39   ` Alistair Francis
2021-08-17  9:48   ` Luc Michel
2021-08-12  9:33 ` [PATCH for-6.2 15/25] hw/arm/nrf51: Wire up sysclk Peter Maydell
2021-08-14  9:06   ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 16/25] hw/arm/stellaris: split stellaris_sys_init() Peter Maydell
2021-08-14  9:10   ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 17/25] hw/arm/stellaris: Wire sysclk up to armv7m Peter Maydell
2021-08-14  9:12   ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 18/25] hw/arm/msf2_soc: Don't allocate separate MemoryRegions Peter Maydell
2021-08-14  9:13   ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 19/25] hw/arm/msf2: Use Clock input to MSF2_SOC instead of m3clk property Peter Maydell
2021-08-14  9:20   ` Alexandre IOOSS
2021-08-14 10:11     ` Peter Maydell
2021-08-14 10:47       ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 20/25] hw/arm/msf2-soc: Wire up refclk Peter Maydell
2021-08-17 15:05   ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 21/25] hw/timer/armv7m_systick: Use clock inputs instead of system_clock_scale Peter Maydell
2021-08-17 15:55   ` Damien Hedde
2021-08-17 15:59     ` Peter Maydell
2021-08-17 16:14       ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 22/25] hw/arm/stellaris: Fix code style issues in GPTM code Peter Maydell
2021-08-14  9:26   ` Alexandre IOOSS
2021-08-12  9:33 ` [PATCH for-6.2 23/25] hw/arm/stellaris: Split stellaris-gptm into its own file Peter Maydell
2021-08-17 15:59   ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 24/25] hw/timer/stellaris-gptm: Use Clock input instead of system_clock_scale Peter Maydell
2021-08-18 12:03   ` Damien Hedde
2021-08-12  9:33 ` [PATCH for-6.2 25/25] arm: Remove system_clock_scale global Peter Maydell
2021-08-13  5:08   ` Alistair Francis

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_EXxMPQjbA+rHwTPfZko_pcmw_Hi6yOXW+mXWAAkcs1g@mail.gmail.com \
    --to=peter.maydell@linaro.org \
    --cc=alistair@alistair23.me \
    --cc=damien.hedde@greensocs.com \
    --cc=david@redhat.com \
    --cc=erdnaxe@crans.org \
    --cc=f4bug@amsat.org \
    --cc=joel@jms.id.au \
    --cc=luc@lmichel.fr \
    --cc=peterx@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sundeep.lkml@gmail.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).