FROMLIST: docs: geniezone: Introduce GenieZone hypervisor
GenieZone is MediaTek proprietary hypervisor solution, and it is running in EL2 stand alone as a type-I hypervisor. It is a pure EL2 implementation which implies it does not rely any specific host VM, and this behavior improves GenieZone's security as it limits its interface. Change-Id: I8326093b5be79af5f87285fc74ee0cd7f5827808 Signed-off-by: Yingshiuan Pan <yingshiuan.pan@mediatek.com> Signed-off-by: Liju Chen <liju-clr.chen@mediatek.com> Signed-off-by: Yi-De Wu <yi-de.wu@mediatek.com> Bug: 280363874 Link: https://lore.kernel.org/lkml/20230727080005.14474-2-yi-de.wu@mediatek.com/
This commit is contained in:
parent
e0c4636bd2
commit
beaffb638b
86
Documentation/virt/geniezone/introduction.rst
Normal file
86
Documentation/virt/geniezone/introduction.rst
Normal file
@ -0,0 +1,86 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
======================
|
||||
GenieZone Introduction
|
||||
======================
|
||||
|
||||
Overview
|
||||
========
|
||||
GenieZone hypervisor(gzvm) is a type-1 hypervisor that supports various virtual
|
||||
machine types and provides security features such as TEE-like scenarios and
|
||||
secure boot. It can create guest VMs for security use cases and has
|
||||
virtualization capabilities for both platform and interrupt. Although the
|
||||
hypervisor can be booted independently, it requires the assistance of GenieZone
|
||||
hypervisor kernel driver(gzvm-ko) to leverage the ability of Linux kernel for
|
||||
vCPU scheduling, memory management, inter-VM communication and virtio backend
|
||||
support.
|
||||
|
||||
Supported Architecture
|
||||
======================
|
||||
GenieZone now only supports MediaTek ARM64 SoC.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
- vCPU Management
|
||||
|
||||
VM manager aims to provide vCPUs on the basis of time sharing on physical CPUs.
|
||||
It requires Linux kernel in host VM for vCPU scheduling and VM power management.
|
||||
|
||||
- Memory Management
|
||||
|
||||
Direct use of physical memory from VMs is forbidden and designed to be dictated
|
||||
to the privilege models managed by GenieZone hypervisor for security reason.
|
||||
With the help of gzvm-ko, the hypervisor would be able to manipulate memory as
|
||||
objects.
|
||||
|
||||
- Virtual Platform
|
||||
|
||||
We manage to emulate a virtual mobile platform for guest OS running on guest
|
||||
VM. The platform supports various architecture-defined devices, such as
|
||||
virtual arch timer, GIC, MMIO, PSCI, and exception watching...etc.
|
||||
|
||||
- Inter-VM Communication
|
||||
|
||||
Communication among guest VMs was provided mainly on RPC. More communication
|
||||
mechanisms were to be provided in the future based on VirtIO-vsock.
|
||||
|
||||
- Device Virtualization
|
||||
|
||||
The solution is provided using the well-known VirtIO. The gzvm-ko would
|
||||
redirect MMIO traps back to VMM where the virtual devices are mostly emulated.
|
||||
Ioeventfd is implemented using eventfd for signaling host VM that some IO
|
||||
events in guest VMs need to be processed.
|
||||
|
||||
- Interrupt virtualization
|
||||
|
||||
All Interrupts during some guest VMs running would be handled by GenieZone
|
||||
hypervisor with the help of gzvm-ko, both virtual and physical ones. In case
|
||||
there's no guest VM running out there, physical interrupts would be handled by
|
||||
host VM directly for performance reason. Irqfd is also implemented using
|
||||
eventfd for accepting vIRQ requests in gzvm-ko.
|
||||
|
||||
Platform architecture component
|
||||
===============================
|
||||
|
||||
- vm
|
||||
|
||||
The vm component is responsible for setting up the capability and memory
|
||||
management for the protected VMs. The capability is mainly about the lifecycle
|
||||
control and boot context initialization. And the memory management is highly
|
||||
integrated with ARM 2-stage translation tables to convert VA to IPA to PA under
|
||||
proper security measures required by protected VMs.
|
||||
|
||||
- vcpu
|
||||
|
||||
The vcpu component is the core of virtualizing aarch64 physical CPU runnable,
|
||||
and it controls the vCPU lifecycle including creating, running and destroying.
|
||||
With self-defined exit handler, the vm component would be able to act
|
||||
accordingly before terminated.
|
||||
|
||||
- vgic
|
||||
|
||||
The vgic component exposes control interfaces to Linux kernel via irqchip, and
|
||||
we intend to support all SPI, PPI, and SGI. When it comes to virtual
|
||||
interrupts, the GenieZone hypervisor would write to list registers and trigger
|
||||
vIRQ injection in guest VMs via GIC.
|
@ -16,6 +16,7 @@ Linux Virtualization Support
|
||||
coco/sev-guest
|
||||
hyperv/index
|
||||
gunyah/index
|
||||
geniezone/introduction
|
||||
|
||||
.. only:: html and subproject
|
||||
|
||||
|
@ -8665,6 +8665,12 @@ F: include/vdso/
|
||||
F: kernel/time/vsyscall.c
|
||||
F: lib/vdso/
|
||||
|
||||
GENIEZONE HYPERVISOR DRIVER
|
||||
M: Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
||||
M: Ze-Yu Wang <ze-yu.wang@mediatek.com>
|
||||
M: Yi-De Wu <yi-de.wu@mediatek.com>
|
||||
F: Documentation/virt/geniezone/
|
||||
|
||||
GENWQE (IBM Generic Workqueue Card)
|
||||
M: Frank Haverkamp <haver@linux.ibm.com>
|
||||
S: Supported
|
||||
|
Loading…
Reference in New Issue
Block a user