[PATCH v2 00/11] Drivers for gunyah hypervisor
Elliot Berman
quic_eberman at quicinc.com
Mon Aug 1 14:12:29 PDT 2022
Gunyah is a Type-1 hypervisor independent of any
high-level OS kernel, and runs in a higher CPU privilege level. It does
not depend on any lower-privileged OS kernel/code for its core
functionality. This increases its security and can support a much smaller
trusted computing base than a Type-2 hypervisor.
Gunyah is an open source hypervisor. The source repo is available at
https://github.com/quic/gunyah-hypervisor.
The diagram below shows the architecture.
::
Primary VM Secondary VMs
+-----+ +-----+ | +-----+ +-----+ +-----+
| | | | | | | | | | |
EL0 | APP | | APP | | | APP | | APP | | APP |
| | | | | | | | | | |
+-----+ +-----+ | +-----+ +-----+ +-----+
---------------------|-------------------------
+--------------+ | +----------------------+
| | | | |
EL1 | Linux Kernel | | |Linux kernel/Other OS | ...
| | | | |
+--------------+ | +----------------------+
--------hvc/smc------|------hvc/smc------------
+----------------------------------------+
| |
EL2 | Gunyah Hypervisor |
| |
+----------------------------------------+
Gunyah provides these following features.
- Threads and Scheduling: The scheduler schedules virtual CPUs (VCPUs) on
physical CPUs and enables time-sharing of the CPUs.
- Memory Management: Gunyah tracks memory ownership and use of all memory
under its control. Memory partitioning between VMs is a fundamental
security feature.
- Interrupt Virtualization: All interrupts are handled in the hypervisor
and routed to the assigned VM.
- Inter-VM Communication: There are several different mechanisms provided
for communicating between VMs.
- Device Virtualization: Para-virtualization of devices is supported using
inter-VM communication. Low level system features and devices such as
interrupt controllers are supported with emulation where required.
Elliot Berman (11):
docs: gunyah: Introduce Gunyah Hypervisor
dt-bindings: Add binding for gunyah hypervisor
arm64: gunyah: Add Gunyah hypercalls ABI
gunyah: Common types and error codes for Gunyah hypercalls
virt: gunyah: Add sysfs nodes
virt: gunyah: Add capabilities bus and devices
gunyah: msgq: Add Gunyah message queues
gunyah: rsc_mgr: Add resource manager RPC core
gunyah: rsc_mgr: Add auxiliary devices for console
gunyah: rsc_mgr: Add RPC for console services
gunyah: Add tty console driver for RM Console Serivces
.../ABI/testing/sysfs-hypervisor-gunyah | 37 +
.../bindings/firmware/gunyah-hypervisor.yaml | 84 +++
Documentation/virt/gunyah/index.rst | 99 +++
Documentation/virt/gunyah/message-queue.rst | 52 ++
Documentation/virt/index.rst | 1 +
MAINTAINERS | 12 +
arch/arm64/include/asm/gunyah.h | 142 ++++
drivers/virt/Kconfig | 1 +
drivers/virt/Makefile | 1 +
drivers/virt/gunyah/Kconfig | 24 +
drivers/virt/gunyah/Makefile | 8 +
drivers/virt/gunyah/device.c | 108 +++
drivers/virt/gunyah/gunyah_private.h | 18 +
drivers/virt/gunyah/msgq.c | 223 ++++++
drivers/virt/gunyah/rsc_mgr.c | 682 ++++++++++++++++++
drivers/virt/gunyah/rsc_mgr.h | 56 ++
drivers/virt/gunyah/rsc_mgr_console.c | 405 +++++++++++
drivers/virt/gunyah/rsc_mgr_rpc.c | 151 ++++
drivers/virt/gunyah/sysfs.c | 176 +++++
include/linux/gunyah.h | 133 ++++
include/linux/gunyah_rsc_mgr.h | 45 ++
21 files changed, 2458 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-hypervisor-gunyah
create mode 100644 Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml
create mode 100644 Documentation/virt/gunyah/index.rst
create mode 100644 Documentation/virt/gunyah/message-queue.rst
create mode 100644 arch/arm64/include/asm/gunyah.h
create mode 100644 drivers/virt/gunyah/Kconfig
create mode 100644 drivers/virt/gunyah/Makefile
create mode 100644 drivers/virt/gunyah/device.c
create mode 100644 drivers/virt/gunyah/gunyah_private.h
create mode 100644 drivers/virt/gunyah/msgq.c
create mode 100644 drivers/virt/gunyah/rsc_mgr.c
create mode 100644 drivers/virt/gunyah/rsc_mgr.h
create mode 100644 drivers/virt/gunyah/rsc_mgr_console.c
create mode 100644 drivers/virt/gunyah/rsc_mgr_rpc.c
create mode 100644 drivers/virt/gunyah/sysfs.c
create mode 100644 include/linux/gunyah.h
create mode 100644 include/linux/gunyah_rsc_mgr.h
--
2.25.1
More information about the linux-arm-kernel
mailing list