Shuo Liu | c619a80 | 2021-02-07 11:10:23 +0800 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0 |
| 2 | |
| 3 | ACRN Hypervisor Introduction |
| 4 | ============================ |
| 5 | |
| 6 | The ACRN Hypervisor is a Type 1 hypervisor, running directly on bare-metal |
| 7 | hardware. It has a privileged management VM, called Service VM, to manage User |
| 8 | VMs and do I/O emulation. |
| 9 | |
| 10 | ACRN userspace is an application running in the Service VM that emulates |
| 11 | devices for a User VM based on command line configurations. ACRN Hypervisor |
| 12 | Service Module (HSM) is a kernel module in the Service VM which provides |
| 13 | hypervisor services to the ACRN userspace. |
| 14 | |
| 15 | Below figure shows the architecture. |
| 16 | |
| 17 | :: |
| 18 | |
| 19 | Service VM User VM |
| 20 | +----------------------------+ | +------------------+ |
| 21 | | +--------------+ | | | | |
| 22 | | |ACRN userspace| | | | | |
| 23 | | +--------------+ | | | | |
| 24 | |-----------------ioctl------| | | | ... |
| 25 | |kernel space +----------+ | | | | |
| 26 | | | HSM | | | | Drivers | |
| 27 | | +----------+ | | | | |
| 28 | +--------------------|-------+ | +------------------+ |
| 29 | +---------------------hypercall----------------------------------------+ |
| 30 | | ACRN Hypervisor | |
| 31 | +----------------------------------------------------------------------+ |
| 32 | | Hardware | |
| 33 | +----------------------------------------------------------------------+ |
| 34 | |
| 35 | ACRN userspace allocates memory for the User VM, configures and initializes the |
| 36 | devices used by the User VM, loads the virtual bootloader, initializes the |
| 37 | virtual CPU state and handles I/O request accesses from the User VM. It uses |
| 38 | ioctls to communicate with the HSM. HSM implements hypervisor services by |
| 39 | interacting with the ACRN Hypervisor via hypercalls. HSM exports a char device |
| 40 | interface (/dev/acrn_hsm) to userspace. |
| 41 | |
| 42 | The ACRN hypervisor is open for contribution from anyone. The source repo is |
| 43 | available at https://github.com/projectacrn/acrn-hypervisor. |