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.

Reply via email to