From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: patches@linaro.org
Subject: [Qemu-devel] [PATCH 00/23] arm: Implement MPS2 AN521 FPGA image
Date: Mon, 21 Jan 2019 18:50:55 +0000 [thread overview]
Message-ID: <20190121185118.18550-1-peter.maydell@linaro.org> (raw)
This patchset implements a model of the AN521 FPGA image for the
MPS2 dev board. The AN521 is similar to our existing AN505 model,
except that it is based on the SSE-200 Subsystem for Embedded
rather than the older IoTKit. The SSE-200 is essentially an
updated version of the IoTKit with a few extra devices and
two Cortex-M33 CPUs. Most of the patchset is enhancing our
IoTKit emulation to add the SSE-200 functionality.
The SSE-200 is the part that I'm most interested in, because
the eventual aim is a model of the Musca-B1 devboard, which
also uses the SSE-200:
https://developer.arm.com/products/system-design/development-boards/iot-test-chips-and-boards/musca-b-test-chip-board
The MPS2-AN521 is a convenient stepping stone that allows us to
test the SSE-200 parts.
Patchset structure:
* patches 1-3 fix some armv7m limitations so we can create
multiple Cortex-M33s in one board with one starting powered off
* patches 4-7 rename the IoTKit code/files to ARMSSE and refactor
it to have an abstract base class that will be subclassed by
the IoTKit and SSE-200 devices
* patches 8-20 add the various extra/different SSE-200 features
(or unimplemented-device stubs for them) governed by feature
switches
* patch 21 adds the SSE-200 model which sets those feature switches
* patches 22 and 23 make the minor mps2-tz changes needed to add
the AN521 image
Currently unimplemented features:
* the iotkit-sysctl device has some extra registers on SSE-200:
FCLK_DIV, SYSCLK_DI, CLOCK_FORCE, INITSVRTOR1, NMI_ENABLE, EWCTRL,
PDCM_PD_SYS_SENSE, PDCM_PD_SRAM[0123]_SENSE (these will fall into
the existing bad-offset logging so we can identify if a guest
is trying to use them)
* the icache control, CPU local security control register bank,
the Message Handling Units (MHUs) and Power Policy Units (PPUs)
are all stubbed out
* the crypto unit and its non-volatile memory are optional, and
we do not implement it
* no CPU power control is implemented -- notably this means that there
is no way for the guest to ever power up CPU 1, so it will sit
permanently dormant. Guest images that only use CPU 0 will work fine.
Before we fix the last of those we (ideally) need the "heterogenous
CPU support" patchset to land.
This image can run the Arm Trusted Firmware M built for AN521.
AN521 docs:
http://infocenter.arm.com/help/topic/com.arm.doc.dai0521c/index.html
SSE-200 TRM:
http://infocenter.arm.com/help/topic/com.arm.doc.101104_0100_00_en/corelink_sse200_subsystem_for_embedded_technical_reference_manual_101104_0100_00_en.pdf
thanks
-- PMM
Peter Maydell (23):
armv7m: Don't assume the NVIC's CPU is CPU 0
armv7m: Make cpu object a child of the armv7m container
armv7m: Pass through start-powered-off CPU property
hw/arm/iotkit: Rename IoTKit to ARMSSE
hw/arm/iotkit: Refactor into abstract base class and subclass
hw/arm/iotkit: Rename 'iotkit' local variables and functions
hw/arm/iotkit: Rename files to hw/arm/armsse.[ch]
hw/misc/iotkit-secctl: Support 4 internal MPCs
hw/arm/armsse: Make number of SRAM banks parameterised
hw/arm/armsse: Make SRAM bank size configurable
hw/arm/armsse: Support dual-CPU configuration
hw/arm/armsse: Give each CPU its own view of memory
hw/arm/armsse: Put each CPU in its own cluster object
iotkit-sysinfo: Make SYS_VERSION and SYS_CONFIG configurable
hw/arm/armsse: Add unimplemented-device stubs for MHUs
hw/arm/armsse: Add unimplemented-device stubs for PPUs
hw/arm/armsse: Add unimplemented-device stub for cache control
registers
hw/arm/armsse: Add unimplemented-device stub for CPU local control
registers
hw/misc/armsse-cpuid: Implement SSE-200 CPU_IDENTITY register block
hw/arm/armsse: Add CPU_IDENTITY block to SSE-200
hw/arm/armsse: Add SSE-200 model
hw/arm/mps2-tz: Add IRQ infrastructure to support SSE-200
hw/arm/mps2-tz: Add mps2-an521 model
hw/arm/Makefile.objs | 2 +-
hw/misc/Makefile.objs | 1 +
include/hw/arm/{iotkit.h => armsse.h} | 113 ++-
include/hw/arm/armv7m.h | 1 +
include/hw/misc/armsse-cpuid.h | 41 +
include/hw/misc/iotkit-secctl.h | 6 +-
include/hw/misc/iotkit-sysinfo.h | 6 +
hw/arm/armsse.c | 1241 +++++++++++++++++++++++++
hw/arm/armv7m.c | 23 +-
hw/arm/iotkit.c | 759 ---------------
hw/arm/mps2-tz.c | 121 ++-
hw/intc/armv7m_nvic.c | 3 +-
hw/misc/armsse-cpuid.c | 134 +++
hw/misc/iotkit-secctl.c | 5 +-
hw/misc/iotkit-sysinfo.c | 15 +-
MAINTAINERS | 6 +-
default-configs/arm-softmmu.mak | 3 +-
hw/misc/trace-events | 4 +
18 files changed, 1670 insertions(+), 814 deletions(-)
rename include/hw/arm/{iotkit.h => armsse.h} (53%)
create mode 100644 include/hw/misc/armsse-cpuid.h
create mode 100644 hw/arm/armsse.c
delete mode 100644 hw/arm/iotkit.c
create mode 100644 hw/misc/armsse-cpuid.c
--
2.20.1
next reply other threads:[~2019-01-21 18:51 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-21 18:50 Peter Maydell [this message]
2019-01-21 18:50 ` [Qemu-devel] [PATCH 01/23] armv7m: Don't assume the NVIC's CPU is CPU 0 Peter Maydell
2019-01-21 20:26 ` Philippe Mathieu-Daudé
2019-01-23 23:44 ` Richard Henderson
2019-01-21 18:50 ` [Qemu-devel] [PATCH 02/23] armv7m: Make cpu object a child of the armv7m container Peter Maydell
2019-01-21 20:30 ` Philippe Mathieu-Daudé
2019-01-23 23:44 ` Richard Henderson
2019-01-21 18:50 ` [Qemu-devel] [PATCH 03/23] armv7m: Pass through start-powered-off CPU property Peter Maydell
2019-01-23 23:45 ` Richard Henderson
2019-01-21 18:50 ` [Qemu-devel] [PATCH 04/23] hw/arm/iotkit: Rename IoTKit to ARMSSE Peter Maydell
2019-01-21 20:32 ` Philippe Mathieu-Daudé
2019-01-25 23:46 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 05/23] hw/arm/iotkit: Refactor into abstract base class and subclass Peter Maydell
2019-01-22 11:01 ` Philippe Mathieu-Daudé
2019-01-25 23:52 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 06/23] hw/arm/iotkit: Rename 'iotkit' local variables and functions Peter Maydell
2019-01-22 11:02 ` Philippe Mathieu-Daudé
2019-01-25 23:52 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 07/23] hw/arm/iotkit: Rename files to hw/arm/armsse.[ch] Peter Maydell
2019-01-22 11:03 ` Philippe Mathieu-Daudé
2019-01-26 0:01 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 08/23] hw/misc/iotkit-secctl: Support 4 internal MPCs Peter Maydell
2019-01-26 0:04 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 09/23] hw/arm/armsse: Make number of SRAM banks parameterised Peter Maydell
2019-01-26 0:06 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 10/23] hw/arm/armsse: Make SRAM bank size configurable Peter Maydell
2019-01-26 0:09 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 11/23] hw/arm/armsse: Support dual-CPU configuration Peter Maydell
2019-01-26 0:14 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 12/23] hw/arm/armsse: Give each CPU its own view of memory Peter Maydell
2019-01-26 0:24 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 13/23] hw/arm/armsse: Put each CPU in its own cluster object Peter Maydell
2019-01-26 0:29 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 14/23] iotkit-sysinfo: Make SYS_VERSION and SYS_CONFIG configurable Peter Maydell
2019-01-26 0:32 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 15/23] hw/arm/armsse: Add unimplemented-device stubs for MHUs Peter Maydell
2019-01-26 0:36 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 16/23] hw/arm/armsse: Add unimplemented-device stubs for PPUs Peter Maydell
2019-01-28 16:17 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 17/23] hw/arm/armsse: Add unimplemented-device stub for cache control registers Peter Maydell
2019-01-28 16:24 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 18/23] hw/arm/armsse: Add unimplemented-device stub for CPU local " Peter Maydell
2019-01-28 16:25 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 19/23] hw/misc/armsse-cpuid: Implement SSE-200 CPU_IDENTITY register block Peter Maydell
2019-01-28 16:26 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 20/23] hw/arm/armsse: Add CPU_IDENTITY block to SSE-200 Peter Maydell
2019-01-28 16:27 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 21/23] hw/arm/armsse: Add SSE-200 model Peter Maydell
2019-01-28 16:28 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 22/23] hw/arm/mps2-tz: Add IRQ infrastructure to support SSE-200 Peter Maydell
2019-01-28 16:31 ` Richard Henderson
2019-01-21 18:51 ` [Qemu-devel] [PATCH 23/23] hw/arm/mps2-tz: Add mps2-an521 model Peter Maydell
2019-01-28 16:33 ` Richard Henderson
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=20190121185118.18550-1-peter.maydell@linaro.org \
--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).