Hi,
analogously to x86, this series provides some platform information on
ARM via the communication region.
In sum, this series passes to inmates:
- A struct jailhouse_debug_console to inmates on all architectures
(including x86, but there it is not used yet)
- arm: GIC (v3 and v4) register locations
- arm: Platform Timer IRQ
The nice thing is that we get rid of mach.h on ARM architectures, which
makes inmates completely platform independant.
Inmate command line options (e.g., con-type, con-divider, ...) may still
override platform information.
Tested on a Jetson TK1 and qemu-arm64.
I converted this to a RFC series as there are still some things missing:
- Documentation for new comm region ABI
- Use the comm region's struct jailhouse_console on x86
- Analogously to arm: rewrite x86's uart drivers, embed them in struct
uart_chip
- We then can (probably) consolidate both architecture's printk.c
Ralf
since v1:
- rebased to next
- register uart drivers in an array instead of a section: the section
approach won't work easily for our inmates
Ralf Ramsauer (18):
inmates: arm: uart: introduce DEFINE_UART macro
inmates: arm: uart: register uarts in uart_array
core, driver: rename struct jailhouse_console to jailhouse_ringbuf
core: refactor struct jailhouse_debug_console
inmates: arm: add consoles to inmate definition
core: pass cell's console to communication region
inmates: arm: configure uarts via communication region
core: add common platform info for ARM architectures
inmates: arm-common: define mmio_read64
inmates: arm: sysregs: define bits for MPIDR
inmates: arm: get GIC configuration from comm_region's platform info
inmates: arm: dynamically choose GIC version
core: arm: define timer_irq in sysconfig and pass it to comm_region
inmates: arm: use timer_irq from comm_region
inmates: arm: delete mach.h
core, tools: Increase header revision
core: increase comm_region's revision
inmates: arm: allow absence of config.h
configs/arm/bananapi-gic-demo.c | 10 ++
configs/arm/bananapi-linux-demo.c | 10 ++
configs/arm/bananapi-uart-demo.c | 10 ++
configs/arm/bananapi.c | 1 +
configs/arm/emtrion-rzg1e-linux-demo.c | 10 ++
configs/arm/emtrion-rzg1e-uart-demo.c | 10 ++
configs/arm/emtrion-rzg1e.c | 1 +
configs/arm/emtrion-rzg1h-linux-demo.c | 10 ++
configs/arm/emtrion-rzg1h-uart-demo.c | 10 ++
configs/arm/emtrion-rzg1h.c | 1 +
configs/arm/emtrion-rzg1m-linux-demo.c | 10 ++
configs/arm/emtrion-rzg1m-uart-demo.c | 10 ++
configs/arm/emtrion-rzg1m.c | 1 +
configs/arm/jetson-tk1-demo.c | 10 ++
configs/arm/jetson-tk1-linux-demo.c | 10 ++
configs/arm/jetson-tk1.c | 1 +
configs/arm/orangepi0-gic-demo.c | 7 +
configs/arm/orangepi0-linux-demo.c | 7 +
configs/arm/orangepi0.c | 1 +
configs/arm/vexpress-gic-demo.c | 7 +
configs/arm/vexpress-linux-demo.c | 7 +
configs/arm/vexpress-uart-demo.c | 7 +
configs/arm/vexpress.c | 1 +
configs/arm64/amd-seattle-gic-demo.c | 7 +
configs/arm64/amd-seattle-linux-demo.c | 7 +
configs/arm64/amd-seattle-uart-demo.c | 7 +
configs/arm64/amd-seattle.c | 1 +
configs/arm64/espressobin-gic-demo.c | 7 +
configs/arm64/espressobin-linux-demo.c | 7 +
configs/arm64/espressobin.c | 1 +
configs/arm64/foundation-v8-gic-demo.c | 7 +
configs/arm64/foundation-v8-linux-demo.c | 7 +
configs/arm64/foundation-v8-uart-demo.c | 7 +
configs/arm64/foundation-v8.c | 1 +
configs/arm64/hikey-gic-demo.c | 7 +
configs/arm64/hikey-linux-demo.c | 7 +
configs/arm64/hikey.c | 1 +
configs/arm64/imx8mq-gic-demo.c | 7 +
configs/arm64/imx8mq.c | 1 +
configs/arm64/jetson-tx1-demo.c | 7 +
configs/arm64/jetson-tx1-linux-demo.c | 7 +
configs/arm64/jetson-tx1.c | 1 +
configs/arm64/jetson-tx2-demo.c | 7 +
configs/arm64/jetson-tx2.c | 1 +
configs/arm64/qemu-arm64-gic-demo.c | 7 +
configs/arm64/qemu-arm64-linux-demo.c | 7 +
configs/arm64/qemu-arm64.c | 1 +
configs/arm64/zynqmp-zcu102-gic-demo.c | 7 +
configs/arm64/zynqmp-zcu102-linux-demo-2.c | 7 +
configs/arm64/zynqmp-zcu102-linux-demo.c | 7 +
configs/arm64/zynqmp-zcu102.c | 1 +
driver/main.c | 16 +--
hypervisor/arch/arm-common/control.c | 10 ++
hypervisor/control.c | 1 +
hypervisor/include/jailhouse/header.h | 2 +-
hypervisor/include/jailhouse/printk.h | 2 +-
hypervisor/include/jailhouse/uart.h | 2 +-
hypervisor/printk.c | 2 +-
.../arch/arm-common/asm/jailhouse_hypercall.h | 44 +++++++
include/arch/arm/asm/jailhouse_hypercall.h | 3 +
include/arch/arm64/asm/jailhouse_hypercall.h | 3 +
include/jailhouse/cell-config.h | 51 +-------
include/jailhouse/console.h | 84 ++++++++++++
include/jailhouse/hypercall.h | 8 +-
inmates/Makefile | 7 +-
inmates/demos/arm/gic-demo.c | 5 +-
inmates/lib/arm-common/Makefile.lib | 2 +-
inmates/lib/arm-common/gic-v2.c | 28 ++--
inmates/lib/arm-common/gic-v3.c | 55 ++++++--
inmates/lib/arm-common/gic.c | 15 ++-
inmates/lib/arm-common/include/gic.h | 2 -
inmates/lib/arm-common/include/inmate.h | 5 +
inmates/lib/arm-common/include/uart.h | 30 +++--
inmates/lib/arm-common/printk.c | 49 ++-----
inmates/lib/arm-common/uart-8250-8.c | 15 +--
inmates/lib/arm-common/uart-8250.c | 15 +--
inmates/lib/arm-common/uart-hscif.c | 15 +--
inmates/lib/arm-common/uart-imx.c | 15 +--
inmates/lib/arm-common/uart-jailhouse.c | 12 +-
inmates/lib/arm-common/uart-mvebu.c | 15 +--
inmates/lib/arm-common/uart-pl011.c | 15 +--
inmates/lib/arm-common/uart-scifa.c | 15 +--
inmates/lib/arm-common/uart-xuartps.c | 15 +--
inmates/lib/arm-common/uart.c | 63 +++++++++
inmates/lib/arm/include/asm/sysregs.h | 9 ++
inmates/lib/arm/include/mach.h | 116 -----------------
inmates/lib/arm/inmate.lds.S | 2 -
inmates/lib/arm64/include/asm/sysregs.h | 10 ++
inmates/lib/arm64/include/mach.h | 121 ------------------
inmates/lib/arm64/inmate.lds.S | 2 -
tools/jailhouse-cell-linux | 4 +-
tools/jailhouse-hardware-check | 2 +-
92 files changed, 721 insertions(+), 460 deletions(-)
create mode 100644 include/arch/arm-common/asm/jailhouse_hypercall.h
create mode 100644 include/jailhouse/console.h
create mode 100644 inmates/lib/arm-common/uart.c
delete mode 100644 inmates/lib/arm/include/mach.h
delete mode 100644 inmates/lib/arm64/include/mach.h
--
2.17.0
--
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.