Project ACRN™
1.2
Project ACRN
v: 1.2
Document Versions
latest
1.1
1.0
0.8
0.7
projectacrn.org links
Project Home
Wiki
Documentation Home
Learn about ACRN
Introduction to Project ACRN
ACRN High-Level Architecture
Usage Scenarios
Automotive Application Scenarios
Industrial Workload Consolidation
Best Known Configurations
SDC scenario with two VMs
SDC scenario with four VMs
Industry scenario without a safety VM
Industry scenario with a safety VM
Logical Partitioning scenario
Licensing
ACRN Device Model, Service VM, and User VM
Boot Sequence
De-privilege boot mode
Direct boot mode
ACRN Hypervisor Architecture
ACRN Device Model Architecture
Device pass through
Hardware support for device passthrough
Hypervisor support for device passthrough
ACRN I/O mediator
Virtio framework architecture
Try using ACRN
Supported Hardware
Minimum System Requirements for Installing ACRN
Verified Platforms According to ACRN Usage
Verified Hardware Specifications Detail
Getting started guide for Intel NUC
Hardware setup
Connecting to the serial port
Firmware update on the NUC
Software setup
Set up a Clear Linux Operating System
Use the script to set up ACRN automatically
Manual setup ACRN guide
Add the ACRN hypervisor to the EFI Partition
ACRN Network Bridge
Set up Reference UOS
Getting started guide for UP2 board
Hardware setup
Connecting to the serial port
Software setup
UP2 serial port setting
UP2 block device
Running the hypervisor
Build ACRN from Source
Introduction
Install build tools and dependencies
Get the ACRN hypervisor source code
Choose the ACRN scenario
Modify the hypervisor configuration
Build the hypervisor, device model and tools
Save as default configuration
Develop using ACRN
Configuration Tools
Configuration Tutorials
Increasing the User OS disk size
Increase the virtual disk size
Resize the
rootfs
partition
Resize the filesystem
How to sign binaries of the Clear Linux image
Prerequisites
Steps to sign the binaries of the Clear Linux image
Using a static IP address
ACRN Network Setup
Setting up the static IP address
Activate the new configuration
ACRN Debugging Tools
ACRN Console Command
An example
ACRN Log
ACRN Trace
Using partition mode on NUC
Prerequisites
Update kernel image and modules of Pre-launched VM
Update ACRN hypervisor Image
Update Ubuntu GRUB to Boot hypervisor and Load Kernel Image
Logical Partition Scenario Startup Checking
Using partition mode on UP2
Prerequisites
Build kernel and modules for partition mode UOS
Enable partition mode in ACRN hypervisor
Switch between privileged VMs
Launch Two User VMs on NUC using SDC2 Scenario
ACRN Service VM Setup
Re-build ACRN UEFI Executable
Launch User VMs with predefined UUIDs
Using Hybrid mode on NUC
Prerequisites
Update Ubuntu GRUB to Boot hypervisor and Load Kernel Image
Hybrid Scenario Startup Checking
User VM Tutorials
Using AGL as the User OS
Introduction to AGL
Steps for using AGL as the UOS
Enable the AGL display
Follow up
Running AGL as VMs
Hardware setup
Software Setup
Using Celadon as User OS
Prerequisites
Build Celadon from source
Steps for Using Celadon as User OS
Building UOS from Clear Linux OS
Build UOS image in Clear Linux OS
Start the User OS (UOS)
Using VxWorks* as User OS
Steps for Using VxWorks as User OS
Using Windows as Guest VM on ACRN
Hardware setup
ACRN Service VM Setup
Setup for Using Windows as Guest VM
ACRN Windows verified feature list
Known Limitations
Device configurations of acrn-dm command line
References
Using PREEMPT_RT-Linux for real-time UOS
Using Zephyr as User OS
Introduction to Zephyr
Steps for Using Zephyr as User OS
Service VM Tutorials
Using Ubuntu as the Service OS
Install Ubuntu (natively)
Install ACRN
Install the Service OS kernel
Prepare the User OS (UOS)
Start the User OS (UOS)
Enabling network sharing
Enabling USB keyboard and mouse
Enable ACRN Features
Enable QoS based on runC container
What is QoS
What is runC container
ACRN-DM QoS architecture
ACRN-QoS CPU utilization example
How to use ACRN-DM QoS
How to enable OVS in ACRN
What is OVS
Why OVS
How to enable OVS in ACRN
How to use OVS bridge
Example for VLAN network based on OVS in ACRN
Real time VM application design guidelines
Run RTVM with dedicated resources/devices
RTVM with virtio PMD (Polling Mode Driver) for I/O sharing
RTVM with HV Emulated Device
DM emulated device (Except PMD)
SGX Virtualization
High Level ACRN SGX Virtualization Design
Enable SGX support for Guest
SGX Capability Exposure
Enclave System Function Handling
Other VMExit Control
Future Development
GPU Passthrough on Skylake NUC
Hardware platform
Software Configuration
Software Setup
Using CAT on UP2
CAT Support on ACRN
Tuning CAT in HV debug shell
Configure CAT for VM with VM Configuration
Using SBL on UP2 Board
Prerequisites
Build SBL
Flash SBL on the UP2
Build ACRN for UP2
Download and install flash tool
SOS and LaaG Installation
Boot to SOS
Launch UOS
Trusty and Security Services in ACRN
Trusty Architecture
Trusty Services
Trusty in ACRN
Contribute to ACRN
Design Guides
ACRN Hypervisor: Modular Design
Overview
Principles
Architecture
References
High-Level Design Guides
Overview
Hypervisor
Device Model
Emulated Devices
Virtio Devices
VM Management
Power Management
Tracing and Logging
Virtual Bootloader
Security
Software Design Guidelines
Error Detection and Error Handling
Module Level Configuration Design Guidelines
References
GVT-g Enabling and Porting Guide
Introduction
Purpose of this document
Overall Components
Core scenario interaction sequences
API details
Trusty TEE
Introduction
Trusty Architecture
Trusty specific Hypercalls
Trusty Boot flow
EPT Hierarchy
L1 Terminal Fault Mitigation
Overview
L1TF Problem in ACRN
L1TF Mitigation in ACRN
Mitigation Recommendations
Mitigation Status
VBS-K Framework Virtualization Overhead Analysis
Introduction
Architecture of VIRTIO-ECHO
Virtualization Overhead Analysis
Conclusion
Contributing Guides
Contribution Guidelines
Licensing
Developer Certification of Origin (DCO)
Prerequisites
Repository layout
Submitting Issues
Contribution Tools and Git Setup
Coding Style
Contribution Workflow
Commit Guidelines
Coding Guidelines
C Programming Language Coding Guidelines
Assembly Language Coding Guidelines
Documentation Guidelines
Headings
Content Highlighting
Lists
Multi-column lists
File names and Commands
Internal Cross-Reference Linking
Non-ASCII Characters
Code and Command Examples
Tabs, spaces, and indenting
Drawings
Drawings using graphviz
Simple directed graph
Adding edge labels
Tables
Finite-State Machine
ACRN documentation generation
Documentation overview
Set up the documentation working folders
Installing the documentation tools
Documentation presentation theme
Running the documentation processors
Publishing content
Document Versioning
Filtering expected warnings
Tools
ACRN-Crashlog
Introduction
Building
Installing
Enabling/Disabling
Usage
Source Code
acrnprobe
Description
Usage
Architecture
Source files
Configuration files
acrnprobe Configuration
Description
Layout
Properties of group members
Crash tree in acrnprobe
Sections
usercrash
Description
Design
Usage
Source Code
acrnlog
Description
Usage
Build and Install
acrntrace
Description
Usage
Build and Install
acrnctl and acrnd
Description
acrnd
Build and Install
Developer references
API Documentation
Hypercall APIs
Device Model APIs
ACRN GVT-g APIs
Core Driver Infrastructure
VHM APIs called from AcrnGT
AcrnGT mediated pass-through (MPT) interface
GVT-g intel_gvt_ops interface
AcrnGT sysfs interface
Configuration Symbol Reference
Introduction
Supported Options
ACRN Shell Commands
Command examples
vm_list
vcpu_list
vcpu_dumpreg
dumpmem
vm_console
vioapic
dump_ioapic
pt
int
cpuid
rdmsr
wrmsr
ACRN Kernel Parameters
Generic kernel parameters
Intel GVT-g (AcrnGT) Parameters
GVT-g (AcrnGT) Kernel Options details
i915.domain_scaler_owner
i915.enable_hangcheck
Device Model Parameters
Release Notes
ACRN v1.2 (Aug 2019)
Version 1.2 major features
What’s New in v1.2
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.1 (June 2019)
Version 1.1 major features
Hybrid Mode Introduced
Support for new guest Operating Systems
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.0.1 (July 2019)
Change Log in version 1.0.1 since version 1.0
ACRN v1.0 (May 2019)
Version 1.0 major features
Hardware Support
APL UP2 board with SBL firmware
Enable post-launched RTVM support for real-time UOS in ACRN
Enable cache QOS with CAT
Enable QoS based on runC container
S5 support for RTVM
OVMF support initial patches merged in ACRN
Support ACPI power key mediator
VT-x, VT-d
PIC/IOAPIC/MSI/MSI-X/PCI/LAPIC
Ethernet
Mass Storage
USB (xDCI)
USB Mediator (xHCI)
Wi-Fi
IPU (MIPI CSI-2, HDMI-in)
Bluetooth
GVT-g for ACRN
GPU - Preemption
GPU - display surface sharing via Hyper DMA
Virtio standard is supported
Device pass-through support
GPIO virtualization
New ACRN tools
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.8 (Apr 2019)
Version 0.8 new features
GPIO virtualization
Enable QoS based on runC container
S5 support for RTVM
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.7 (Mar 2019)
Version 0.7 new features
Enable cache QOS with CAT
Support ACPI power key mediator
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.6 (Feb 2019)
Version 0.6 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.5 (Jan 2019)
Version 0.5 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.4 (Dec 2018)
Version 0.4 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.3 (Nov 2018)
Version 0.3 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.2 (Sep 2018)
Version 0.2 new features
VT-x, VT-d
PIC/IOAPIC/MSI/MSI-X/PCI/LAPIC
Ethernet
Storage (eMMC)
USB (xDCI)
USB Mediator (xHCI and DRD)
CSME
WiFi
IPU (MIPI-CS2, HDMI-in)
Bluetooth
GPU - Preemption
GPU - display surface sharing via Hyper DMA
S3
Fixed Issues
Known Issues
Change Log
ACRN v0.1 (July 2018)
Version 0.1 new features
Hardware Support
GVT-g for ACRN
Virtio standard is supported
Device pass-through support
Hypervisor configuration
New ACRN tools
Known Issues
Change Log
FAQ
What hardware does ACRN support?
Clear Linux* OS fails to boot on my NUC
How do I configure ACRN’s memory use?
How to modify the default display output for a UOS?
Why does ACRN need to know how much RAM the system has?
How to build ACRN on Fedora 29?
Project ACRN™
Docs
»
Contribute to ACRN
»
High-Level Design Guides
»
Hypervisor high-level design
Hypervisor high-level design
¶
Hypervisor Startup
CPU Virtualization
Memory management
I/O Emulation
IOC Virtualization
Physical Interrupt
Timer
Virtual Interrupt
VT-d
Device Passthrough
Partition mode
Power Management
Console, Shell, and vUART
Hypercall / VHM upcall
Compile-time configuration