From: Antonios Motakis <[email protected]>

This patch series includes the port of Jailhouse on ARM AArch64.

This is the main part of a 3 part series:
These apply in succession (preparatory -> main -> inmates series),
on the latest next branch from upstream, and they can also be
pulled from https://github.com/tvelocity/jailhouse.git (branch arm64_v9)

Changes from v8:
 - Caught up with the preparatory series...
 - Got rid of the virt_id from the per_cpu struct. We don't need it.
   We mainly care about the MPIDR and the logical cpu_id used by
   Jailhouse; the GIC code also cares about the CPU interface number
   as well. None of these really map to the virt_id somehow.
 - Etc etc.

Changes from RFCv7:
 - The early bootstrap page tables are now being generated
   dynamically, during entry. This change will make it easier
   to make Jailhouse a position independent executable in the
   future.
 - ARMv7 (should be) working again!
 - Fixed a few issues during hypervisor disable
 - The hypervisor should work on a wider range of PARanges now
 - Further small fixes, clean ups, as always

Changes from RFCv6:
 - Probably too many to list here!
 - Initial support for MPID affinity levels (as needed by PSCI)
 - Working inmates
 - Linux inmate support, by Dmitry Voytik!
 - Improved /fixed cache coherency handling by Dmitry Voytik
 - Support for the 4th level of page tables, allowing for a PARange of 40-48
 - Many fixes that were discovered by running Jailhouse on the AMD Seattle

Changes from RFCv5:
 - PSCI support
 - Hypercalls to the hypervisor
 - Hypervisor disable, and also return to Linux properly when
   initialization fails
 - More clean ups, clean ups, fixes
Contributions by Dmitry Voytik:
 - Implement cache flushes, maintenance of the memory system
 - Refactored a lot of trap handling code and other mmio bits
 - Dump cell registers support for AArch64.

Changes from RFCv4:
 - Stubs now use trace_error, or block, to make it more obvious when
   we run into a missing stub during development.
 - Working root cell! Thanks to working MMU mappings, and working
   GICv2 handling.
 - MMU mappings are being set up for the hypervisor (EL2), and for
   the root cell (Stage 2 EL1).
 - Reworked the JAILHOUSE_IOMAP_ADDR decoupling from JAILHOUSE_BASE
 - Clean ups, clean ups, fixes

Antonios Motakis (22):
  arm64: add sysregs helper macros
  arm64: add asm/processor.h header for AArch64
  arm64: add definitions for the AArch64 page table format
  arm64: spinlock implementation
  arm64: add percpu.h header file
  arm64: add cell.h header file
  arm64: add jailhouse_hypercall.h header file
  arm64: minimum stubs to allow building on AArch64
  config: add root cell configuration for the ARMv8 Foundation model
  config: root cell configuration for the AMD Seattle
  arm64: implement data cache flush
  arm64: initialize EL2 for hypervisor entry
  arm64: initialize the hypervisor for entry
  arm64: initial exception handling and catch EL2 aborts
  arm64: plug the hypervisor mmu code
  arm64: handle accesses to emulated mmio regions
  arm64: plug the irqchip and GICv2 code from AArch32
  arm64: PSCI support for SMP on AArch64
  arm64: reanimate the root cell back from the dead
  arm64: hande hypercalls from the cells
  arm64: hypervisor disable support
  arm64: implement cell control infrastructure

Claudio Fontana (1):
  arm64: implement bitops

Dmitry Voytik (4):
  arm64: add control.h header file
  arm64: add types.h
  arm64: dump stack on unhandled exceptions
  tools: arm64: add exception dump parser

Jan Kiszka (1):
  ci: Add support for arm64

 .travis.yml                                        |    2 +-
 ci/build-all-configs.sh                            |    6 +-
 ci/gen-kernel-build.sh                             |    1 +
 ci/jailhouse-config-amd-seattle.h                  |    5 +
 ci/kernel-config-amd-seattle                       | 3091 ++++++++++++++++++++
 configs/amd-seattle.c                              |  169 ++
 configs/foundation-v8.c                            |  120 +
 hypervisor/Makefile                                |    4 +
 hypervisor/arch/arm/include/asm/psci.h             |    3 +-
 hypervisor/arch/arm/include/asm/uart_pl011.h       |    2 +
 hypervisor/arch/arm/psci.c                         |    4 +-
 hypervisor/arch/arm64/Makefile                     |   26 +
 hypervisor/arch/arm64/asm-defines.c                |   19 +
 hypervisor/arch/arm64/caches.S                     |   48 +
 hypervisor/arch/arm64/control.c                    |  321 ++
 hypervisor/arch/arm64/entry.S                      |  330 +++
 hypervisor/arch/arm64/exception.S                  |   96 +
 hypervisor/arch/arm64/include/asm/bitops.h         |  141 +
 hypervisor/arch/arm64/include/asm/cell.h           |   36 +
 hypervisor/arch/arm64/include/asm/control.h        |   43 +
 hypervisor/arch/arm64/include/asm/head.h           |   16 +
 .../arch/arm64/include/asm/jailhouse_hypercall.h   |   91 +
 hypervisor/arch/arm64/include/asm/paging.h         |  245 ++
 hypervisor/arch/arm64/include/asm/percpu.h         |  123 +
 hypervisor/arch/arm64/include/asm/platform.h       |   69 +
 hypervisor/arch/arm64/include/asm/processor.h      |  191 ++
 hypervisor/arch/arm64/include/asm/sections.h       |   29 +
 hypervisor/arch/arm64/include/asm/setup.h          |   29 +
 hypervisor/arch/arm64/include/asm/spinlock.h       |   71 +
 hypervisor/arch/arm64/include/asm/sysregs.h        |   26 +
 hypervisor/arch/arm64/include/asm/traps.h          |   37 +
 hypervisor/arch/arm64/include/asm/types.h          |   46 +
 hypervisor/arch/arm64/mmio.c                       |  109 +
 hypervisor/arch/arm64/psci_low.S                   |   65 +
 hypervisor/arch/arm64/setup.c                      |  126 +
 hypervisor/arch/arm64/traps.c                      |  204 ++
 hypervisor/include/jailhouse/control.h             |    6 +
 inmates/demos/arm64/Makefile                       |    0
 inmates/lib/arm64/Makefile                         |    0
 inmates/tools/arm64/Makefile                       |    0
 scripts/arm64-parsedump.py                         |  167 ++
 41 files changed, 6113 insertions(+), 4 deletions(-)
 create mode 100644 ci/jailhouse-config-amd-seattle.h
 create mode 100644 ci/kernel-config-amd-seattle
 create mode 100644 configs/amd-seattle.c
 create mode 100644 configs/foundation-v8.c
 create mode 100644 hypervisor/arch/arm64/Makefile
 create mode 100644 hypervisor/arch/arm64/asm-defines.c
 create mode 100644 hypervisor/arch/arm64/caches.S
 create mode 100644 hypervisor/arch/arm64/control.c
 create mode 100644 hypervisor/arch/arm64/entry.S
 create mode 100644 hypervisor/arch/arm64/exception.S
 create mode 100644 hypervisor/arch/arm64/include/asm/bitops.h
 create mode 100644 hypervisor/arch/arm64/include/asm/cell.h
 create mode 100644 hypervisor/arch/arm64/include/asm/control.h
 create mode 100644 hypervisor/arch/arm64/include/asm/head.h
 create mode 100644 hypervisor/arch/arm64/include/asm/jailhouse_hypercall.h
 create mode 100644 hypervisor/arch/arm64/include/asm/paging.h
 create mode 100644 hypervisor/arch/arm64/include/asm/percpu.h
 create mode 100644 hypervisor/arch/arm64/include/asm/platform.h
 create mode 100644 hypervisor/arch/arm64/include/asm/processor.h
 create mode 100644 hypervisor/arch/arm64/include/asm/sections.h
 create mode 100644 hypervisor/arch/arm64/include/asm/setup.h
 create mode 100644 hypervisor/arch/arm64/include/asm/spinlock.h
 create mode 100644 hypervisor/arch/arm64/include/asm/sysregs.h
 create mode 100644 hypervisor/arch/arm64/include/asm/traps.h
 create mode 100644 hypervisor/arch/arm64/include/asm/types.h
 create mode 100644 hypervisor/arch/arm64/mmio.c
 create mode 100644 hypervisor/arch/arm64/psci_low.S
 create mode 100644 hypervisor/arch/arm64/setup.c
 create mode 100644 hypervisor/arch/arm64/traps.c
 create mode 100644 inmates/demos/arm64/Makefile
 create mode 100644 inmates/lib/arm64/Makefile
 create mode 100644 inmates/tools/arm64/Makefile
 create mode 100755 scripts/arm64-parsedump.py

-- 
2.8.0.rc3


-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to