qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-arm] [PATCH 00/16] arm: Implement MPS2 watchdogs and DMA


From: Peter Maydell
Subject: [Qemu-arm] [PATCH 00/16] arm: Implement MPS2 watchdogs and DMA
Date: Thu, 9 Aug 2018 14:00:59 +0100

This patchset adds some more missing devices to the MPS2 AN505
board model:

Patches 1-3 implement and wire up the CMSDK APB watchdog devices.

Patch 4 adds a CMSDK timer device that had been forgotten.

Ppatches 5-6 implement and wire up the "system control element",
which is some simple control/ID registers in the IoTKit

Patches 7-16 are the meat of the patchset, and add support
for the DMA controllers and their associated Master Security
Controllers. A TrustZone MSC sits in front of a device which
can be a bus master (such as a DMA controller) and allows secure
software to configure it to either pass through or reject transactions
made by that bus master. Rejected transactions may be configured to
either be aborted, or to behave as RAZ/WI. An interrupt can be
signalled for a rejected transaction. The AN505 has four
PL081 DMA controllers, each with its own MSC.

Patches 10-15 are various minor cleanups and bugfixes in
the PL081 model that are needed for its use in the AN505.
In particular the PL081 was previously entirely broken as
it would hw_error() as soon as the guest enabled the DMA
engine. I assume this was either accidentally left-in debug code,
or a deliberate choice to guard a never-tested implementation
so as to be able to identify when we had guest code to test it
with. (Linux for the realview/versatile boards never tries to
use the PL08x there for DMA.)

This patchset is sufficient for the "DMA" test in the AN505
self-test binary to pass. (I suspect it is not giving the
PL081 or MSC a very thorough workout, though.)

Based-on: <address@hidden>
("[PATCH 0/5] mps2: Implement FPGAIO counters and dual-timer")

thanks
-- PMM

Peter Maydell (16):
  hw/watchdog/cmsdk_apb_watchdog: Implement CMSDK APB watchdog module
  nvic: Expose NMI line
  hw/arm/iotkit: Wire up the watchdogs
  hw/arm/iotkit: Wire up the S32KTIMER
  hw/misc/iotkit-sysctl: Implement IoTKit system control element
  hw/misc/iotkit: Wire up the system control element
  hw/misc/tz-msc: Model TrustZone Master Security Controller
  hw/misc/iotkit-secctl: Wire up registers for controlling MSCs
  hw/arm/iotkit: Wire up the lines for MSCs
  hw/dma/pl080: Allow use as embedded-struct device
  hw/dma/pl080: Support all three interrupt lines
  hw/dma/pl080: Don't use CPU address space for DMA accesses
  hw/dma/pl080: Provide device reset function
  hw/dma/pl080: Correct bug in register address decode logic
  hw/dma/pl080: Remove hw_error() if DMA is enabled
  hw/arm/mps2-tz: Create PL081s and MSCs

 Makefile.objs                            |   1 +
 hw/misc/Makefile.objs                    |   2 +
 hw/watchdog/Makefile.objs                |   1 +
 include/hw/arm/iotkit.h                  |  20 +-
 include/hw/dma/pl080.h                   |  71 +++++
 include/hw/misc/iotkit-secctl.h          |  14 +
 include/hw/misc/iotkit-sysctl.h          |  50 ++++
 include/hw/misc/tz-msc.h                 |  79 ++++++
 include/hw/watchdog/cmsdk-apb-watchdog.h |  59 ++++
 hw/arm/armv7m.c                          |   1 +
 hw/arm/iotkit.c                          |  99 ++++++-
 hw/arm/mps2-tz.c                         | 101 ++++++-
 hw/arm/realview.c                        |   8 +-
 hw/arm/versatilepb.c                     |   9 +-
 hw/dma/pl080.c                           | 113 ++++----
 hw/intc/armv7m_nvic.c                    |  19 ++
 hw/misc/iotkit-secctl.c                  |  73 ++++-
 hw/misc/iotkit-sysctl.c                  | 324 ++++++++++++++++++++++
 hw/misc/tz-msc.c                         | 308 +++++++++++++++++++++
 hw/watchdog/cmsdk-apb-watchdog.c         | 326 +++++++++++++++++++++++
 MAINTAINERS                              |   7 +
 default-configs/arm-softmmu.mak          |   3 +
 hw/intc/trace-events                     |   1 +
 hw/misc/trace-events                     |  16 ++
 hw/watchdog/trace-events                 |   6 +
 25 files changed, 1632 insertions(+), 79 deletions(-)
 create mode 100644 include/hw/dma/pl080.h
 create mode 100644 include/hw/misc/iotkit-sysctl.h
 create mode 100644 include/hw/misc/tz-msc.h
 create mode 100644 include/hw/watchdog/cmsdk-apb-watchdog.h
 create mode 100644 hw/misc/iotkit-sysctl.c
 create mode 100644 hw/misc/tz-msc.c
 create mode 100644 hw/watchdog/cmsdk-apb-watchdog.c
 create mode 100644 hw/watchdog/trace-events

-- 
2.17.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]