This is now finally the ARM64 support for Jailhouse, ready to be merged. It is based on the work of many people at Huawai, rebased on the latest fixes and refactorings of ARM and augmented with support for the HiKey board as well as some further corrections. Reviews are welcome!
Thanks for your valuable contributions (and patience), Jan CC: Jani Kokkonen <jani.kokko...@huawei.com> CC: Veaceslav Falico <veaceslav.fal...@huawei.com> CC: wuqix...@huawei.com CC: Mazda Sabony <mazda.sab...@amd.com> CC: Edgar E. Iglesias <edgar.igles...@xilinx.com> CC: Jean-Philippe Brucker <jean-philippe.bruc...@arm.com> CC: Will Deacon <will.dea...@arm.com> CC: Antonios Motakis <antonios.mota...@huawei.com> CC: Claudio Fontana <claudio.font...@huawei.com> CC: Dmitry Voytik <dmitry.voy...@huawei.com> Antonios Motakis (26): 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 config: add root cell configuration for the ARMv8 Foundation model config: root cell configuration for the AMD Seattle 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: reanimate the root cell back from the dead arm64: hypervisor disable support inmates: arm: uart-demo: move heartbeat to header file inmates: arm: lib: move IRQ stack initialization inmates: arm: prep timer library for AArch64 inmates: arm64: port inmate demos from AArch32 to AArch64 config: add uart demo cell config for Foundation v8 config: gic inmate cell config for foundation-v8 config: UART demo cell config for the AMD Seattle config: gic demo cell config for the AMD Seattle config: add linux inmate cell config for AMD Seattle Documentation: add instructions for ARM64 Linux loader Claudio Fontana (1): arm64: implement bitops Dmitry Voytik (6): arm64: add control.h header file arm64: add types.h arm64: dump stack on unhandled exceptions tools: arm64: add exception dump parser inmates: arm64: implement non-root linux loader config: add linux inmate cell config for foundation-v8 Jan Kiszka (17): arm: Move modules shared with arm64 into arch/arm-common arm: Factor out common control.c module arm64: Provide minimum stubs to allow building on AArch64 arm64: Implement data cache flush arm64: plug the irqchip and GICv2 code from AArch32 arm64: Plug arm-common control module arm: Prepare for 64-bit PSCI arm64: PSCI support for SMP on AArch64 arm64: Handle hypercalls from the cells arm64: Implement cell creation/destruction ci: Add support for arm64 arm64: Switch to kernel 4.7+ hyp-stub interface arm64: Add dsb around EL2 TLB flush configs, inmates: Add support for HiKey board ci: Add aarch64 gcc to Coverity setup ci: Patch the pre-built kernel with __boot_cpu_mode export arm64: Fix out-of-bounds read access in gic_cpu_reset .travis.yml | 4 +- Documentation/non-root-linux-arm64.txt | 51 + ci/build-all-configs.sh | 6 +- ci/gen-kernel-build.sh | 23 + ci/jailhouse-config-amd-seattle.h | 5 + ci/kernel-config-amd-seattle | 3091 ++++++++++++++++++++ configs/amd-seattle-gic-demo.c | 55 + configs/amd-seattle-linux-demo.c | 100 + configs/amd-seattle-uart-demo.c | 55 + configs/amd-seattle.c | 193 ++ configs/foundation-v8-gic-demo.c | 55 + configs/foundation-v8-linux-demo.c | 74 + configs/foundation-v8-uart-demo.c | 55 + configs/foundation-v8.c | 149 + configs/hikey-gic-demo.c | 55 + configs/hikey.c | 81 + hypervisor/Makefile | 4 + hypervisor/arch/arm-common/control.c | 220 ++ .../arch/{arm => arm-common}/dbg-write-pl011.c | 0 hypervisor/arch/{arm => arm-common}/dbg-write.c | 0 hypervisor/arch/{arm => arm-common}/gic-common.c | 0 hypervisor/arch/{arm => arm-common}/gic-v2.c | 7 +- hypervisor/arch/{arm => arm-common}/irqchip.c | 0 hypervisor/arch/{arm => arm-common}/lib.c | 0 hypervisor/arch/{arm => arm-common}/mmu_cell.c | 0 hypervisor/arch/{arm => arm-common}/paging.c | 0 hypervisor/arch/{arm => arm-common}/psci.c | 9 +- hypervisor/arch/arm/Makefile | 17 +- hypervisor/arch/arm/control.c | 207 +- hypervisor/arch/arm/include/asm/control.h | 1 + hypervisor/arch/arm/include/asm/psci.h | 3 +- hypervisor/arch/arm/include/asm/sysregs.h | 4 +- hypervisor/arch/arm/include/asm/uart_pl011.h | 2 + hypervisor/arch/arm64/Makefile | 29 + hypervisor/arch/arm64/asm-defines.c | 36 + hypervisor/arch/arm64/caches.S | 65 + hypervisor/arch/arm64/control.c | 142 + hypervisor/arch/arm64/entry.S | 343 +++ hypervisor/arch/arm64/exception.S | 95 + hypervisor/arch/arm64/include/asm/bitops.h | 141 + hypervisor/arch/arm64/include/asm/cell.h | 27 + .../arch/{arm => arm64}/include/asm/control.h | 19 +- .../arch/arm64/include/asm/jailhouse_hypercall.h | 92 + hypervisor/arch/arm64/include/asm/paging.h | 277 ++ hypervisor/arch/arm64/include/asm/percpu.h | 125 + hypervisor/arch/arm64/include/asm/processor.h | 191 ++ hypervisor/arch/arm64/include/asm/sections.h | 29 + hypervisor/arch/arm64/include/asm/setup.h | 25 + hypervisor/arch/arm64/include/asm/spinlock.h | 73 + hypervisor/arch/arm64/include/asm/sysregs.h | 26 + hypervisor/arch/arm64/include/asm/traps.h | 35 + hypervisor/arch/arm64/include/asm/types.h | 46 + hypervisor/arch/arm64/mmio.c | 109 + hypervisor/arch/arm64/setup.c | 131 + hypervisor/arch/arm64/traps.c | 201 ++ inmates/Makefile | 4 + inmates/demos/arm/uart-demo.c | 13 - inmates/demos/arm64/Makefile | 20 + inmates/lib/arm/gic.c | 5 +- inmates/lib/arm/include/gic.h | 9 + inmates/lib/arm/include/inmate.h | 13 + inmates/lib/arm/timer.c | 6 +- inmates/lib/arm64/Makefile | 21 + inmates/lib/arm64/Makefile.lib | 47 + inmates/lib/arm64/header.S | 66 + inmates/lib/{arm => arm64}/include/gic.h | 2 +- inmates/lib/{arm => arm64}/include/inmate.h | 14 +- .../arm64/include/mach-amd-seattle/mach/gic_v2.h | 14 + .../arm64/include/mach-amd-seattle/mach/timer.h | 13 + .../lib/arm64/include/mach-amd-seattle/mach/uart.h | 13 + .../arm64/include/mach-foundation-v8/mach/gic_v2.h | 14 + .../arm64/include/mach-foundation-v8/mach/timer.h | 13 + .../arm64/include/mach-foundation-v8/mach/uart.h | 13 + .../lib/arm64/include/mach-hi6220/mach/gic_v2.h | 14 + inmates/lib/arm64/include/mach-hi6220/mach/timer.h | 13 + inmates/lib/arm64/include/mach-hi6220/mach/uart.h | 13 + inmates/lib/arm64/inmate.lds | 46 + inmates/tools/arm64/Makefile | 19 + inmates/tools/arm64/linux-loader.c | 66 + samples/kernel-inmate-amd-seattle.dts | 149 + samples/kernel-inmate-foundation-v8.dts | 103 + scripts/arm64-parsedump.py | 167 ++ 82 files changed, 7414 insertions(+), 259 deletions(-) create mode 100644 Documentation/non-root-linux-arm64.txt create mode 100644 ci/jailhouse-config-amd-seattle.h create mode 100644 ci/kernel-config-amd-seattle create mode 100644 configs/amd-seattle-gic-demo.c create mode 100644 configs/amd-seattle-linux-demo.c create mode 100644 configs/amd-seattle-uart-demo.c create mode 100644 configs/amd-seattle.c create mode 100644 configs/foundation-v8-gic-demo.c create mode 100644 configs/foundation-v8-linux-demo.c create mode 100644 configs/foundation-v8-uart-demo.c create mode 100644 configs/foundation-v8.c create mode 100644 configs/hikey-gic-demo.c create mode 100644 configs/hikey.c create mode 100644 hypervisor/arch/arm-common/control.c rename hypervisor/arch/{arm => arm-common}/dbg-write-pl011.c (100%) rename hypervisor/arch/{arm => arm-common}/dbg-write.c (100%) rename hypervisor/arch/{arm => arm-common}/gic-common.c (100%) rename hypervisor/arch/{arm => arm-common}/gic-v2.c (98%) rename hypervisor/arch/{arm => arm-common}/irqchip.c (100%) rename hypervisor/arch/{arm => arm-common}/lib.c (100%) rename hypervisor/arch/{arm => arm-common}/mmu_cell.c (100%) rename hypervisor/arch/{arm => arm-common}/paging.c (100%) rename hypervisor/arch/{arm => arm-common}/psci.c (87%) 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 copy hypervisor/arch/{arm => arm64}/include/asm/control.h (74%) 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/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/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/lib/arm64/Makefile.lib create mode 100644 inmates/lib/arm64/header.S copy inmates/lib/{arm => arm64}/include/gic.h (94%) copy inmates/lib/{arm => arm64}/include/inmate.h (78%) create mode 100644 inmates/lib/arm64/include/mach-amd-seattle/mach/gic_v2.h create mode 100644 inmates/lib/arm64/include/mach-amd-seattle/mach/timer.h create mode 100644 inmates/lib/arm64/include/mach-amd-seattle/mach/uart.h create mode 100644 inmates/lib/arm64/include/mach-foundation-v8/mach/gic_v2.h create mode 100644 inmates/lib/arm64/include/mach-foundation-v8/mach/timer.h create mode 100644 inmates/lib/arm64/include/mach-foundation-v8/mach/uart.h create mode 100644 inmates/lib/arm64/include/mach-hi6220/mach/gic_v2.h create mode 100644 inmates/lib/arm64/include/mach-hi6220/mach/timer.h create mode 100644 inmates/lib/arm64/include/mach-hi6220/mach/uart.h create mode 100644 inmates/lib/arm64/inmate.lds create mode 100644 inmates/tools/arm64/Makefile create mode 100644 inmates/tools/arm64/linux-loader.c create mode 100644 samples/kernel-inmate-amd-seattle.dts create mode 100644 samples/kernel-inmate-foundation-v8.dts create mode 100755 scripts/arm64-parsedump.py -- 2.1.4 -- 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 jailhouse-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.