ACRN v0.7 (Mar 2019)¶
We are pleased to announce the release of Project ACRN version 0.7.
ACRN is a flexible, lightweight reference hypervisor, built with real-time and safety-criticality in mind, optimized to streamline embedded development through an open source platform. Check out the What Is ACRN for more information.
All project ACRN source code is maintained in the https://github.com/projectacrn/acrn-hypervisor repository and includes folders for the ACRN hypervisor, the ACRN device model, tools, and documentation. You can either download this source code as a zip or tar.gz file (see the ACRN v0.7 GitHub release page or use Git clone and checkout commands:
git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v0.7
The project’s online technical documentation is also tagged to correspond with a specific release: generated v0.7 documents can be found at https://projectacrn.github.io/0.7/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/.
ACRN v0.7 requires Clear Linux OS version 28260.
Version 0.7 New Features¶
Enable Cache QOS With CAT¶
Cache Allocation Technology (CAT) is enabled on Apollo Lake (APL)
platforms, providing cache isolation between VMs mainly for real-time
performance quality of service (QoS). The CAT for a specific VM is
normally set up at boot time per the VM configuration determined at
build time. For debugging and performance tuning, the CAT can also be
enabled and configured at runtime by writing proper values to certain
MSRs using the wrmsr
command on ACRN shell.
Support ACPI Power Key Mediator¶
ACRN supports ACPI power/sleep key on the APL and KBL NUC platforms, triggering S3/S5 flow, following the ACPI spec.
Document Updates¶
Several new documents have been added in this release, including:
ACRN Roadmap: look ahead in 2019
Performance analysis of VBS-k framework
HLD design doc for IOC virtualization
Additional project coding guidelines
New Features Details¶
940 - Device: IPU support
1138 - Debug: NPK
1186 - Disable VBS_DEBUG to improve VBS-K performance
1508 - DM: customized changes for RPMB mux kernel module
1536 - dm: add virtio_mei mediator
1544 - dm: rpmb: Support RPMB mode config from launch.sh
1812 - export kdf_sha256 interface from crypto lib
1815 - improve emulation of I/O port CF9
1915 - Enable Audio Mediator
1953 - Add cmdline option to disable/enable vhm module for guest
2176 - Fix RTC issues in ACPI
2319 - Add vHPET support
2351 - Enable post-launched hybrid mode
2407 - Coding style changes for IOAPIC and MSI representation
2426 - Enable Interrupt Remapping feature
2431 - VPCI code cleanup
2448 - Adding support for socket as a backend for Virtio-Console
2462 - Enable cache QOS with CAT
2496 - VTD/IOMMU Modularization
Fixed Issues Details¶
1319 - SD card pass-through: UOS can’t see SD card after UOS reboot.
1774 - UOS cannot stop by command: acrnctl stop [vm name] in SOS
1780 - Some video formats cannot be played in SOS.
1782 - UOS failed to get ip with the pass-throughed network card
1999 - [APLNUC][KBLNUC][APLUP2]UOS reset fails with acrnctl reset command
2276 - OVMF failed to launch UOS on UP2
2298 - Hard codes path to iasl
2316 - Tools don’t respect CFLAGS/LDFLAGS from environment
2338 - [UP2]Lost 2G memory in SOS when using SBL as bootloader on UP2
2370 - Doesn’t use parallel make in subbuilds
2422 - [PATCH] profiling: fix the system freeze issue when running profiling tool
2453 - Fix vHPET memory leak on device reset
2455 - host call stack disappear when dumping
2516 - [UP2][SBL] System hang with DP monitor connected
2528 - [APLUP2] SBL (built by SBL latest code) failed to boot ACRN hypervisor
2543 - vLAPIC: DCR not properly initialized
2548 - [APLNUC/KBLNUC][GVT][SOS/LAAG] Weston fails to play video in SOS and UOS
2572 - Startup SOS Fails
2588 - Uninitialized Variable is used in acrn_kernel/drivers/acrn/acrn_trace.c and acrn_hvlog.c
2606 - HV crash during running VMM related Hypercall fuzzing test.
2624 - Loading PCI devices with table_count > CONFIG_MAX_MSIX_TABLE_NUM leads to writing outside of struct.
2643 - Ethernet pass-through, network card can’t get ip in uos
2674 - VGPU needs the lock when updating ppggt/ggtt to avoid the race condition
2695 - UOS powers off or suspend while pressing power key, UOS has no response
Known Issues¶
- 1773 - USB Mediator: Can’t find all devices when multiple USB devices connected [Reproduce rate:60%]
After booting UOS with multiple USB devices plugged in, there’s a 60% chance that one or more devices are not discovered.
Impact: Cannot use multiple USB devices at same time.
Workaround: Unplug and plug-in the unrecognized device after booting.
- 1991 - Input not accepted in UART Console for corner case
Input is useless in UART Console for a corner case, demonstrated with these steps:
Boot to SOS
ssh into the SOS.
use
./launch_UOS.sh
to boot UOS.On the host, use
minicom -s dev/ttyUSB0
.Use
sos_console 0
to launch SOS.
Impact: Fails to use UART for input.
Workaround: Enter other keys before typing Enter.
- 1996 - There is an error log when using
acrnd&
to boot UOS An error log is printed when starting
acrnd
as a background job (acrnd&
) to boot UOS. The UOS still boots up normally, but prints:Failed to open the socket(sos-lcs) to query the reason for the wake-up. Activating all vms when acrnd & to boot uos.
Impact: UOS boots normally, but prints an error log message.
Workaround: None.
- 2267 - [APLUP2][LaaG] LaaG can’t detect 4k monitor
After launching UOS on APL UP2 , 4k monitor cannot be detected.
Impact: UOS can’t display on a 4k monitor.
Workaround: Use a monitor with less than 4k resolution.
- 2278 - [KBLNUC] Cx/Px is not supported on KBLNUC
C states and P states are not supported on KBL NUC.
Impact: Power Management state-related operations in SOS/UOS on KBL NUC can’t be used.
Workaround: None
- 2279 - [APLNUC] After exiting UOS with mediator
Usb_KeyBoard and Mouse, SOS cannot use the USB keyboard and mouse.
These steps reproduce the issue:
Insert USB keyboard and mouse in standard A port (USB3.0 port)
Boot UOS by sharing the USB keyboard and mouse in cmd line:
-s n,xhci,1-1:1-2:1-3:1-4:2-1:2-2:2-3:2-4 \
UOS access USB keyboard and mouse.
Exit UOS.
SOS tries to access USB keyboard and mouse, and fails.
Impact: SOS cannot use USB keyboard and mouse in such case.
Workaround: Unplug and plug-in the USB keyboard and mouse after exiting UOS.
- 2522 - [NUC7i7BNH] After starting IAS in SOS, there is no display
On NUC7i7BNH, after starting IAS in SOS, there is no display if the monitor is connected with a TPC-to-VGA connector.
Impact: Special model [NUC7i7BNH] has no display in SOS.
Workaround: None.
- 2523 - UOS monitor does not display when using IAS
There is no UOS display after starting IAS weston.
Impact: Cannot use IAS weston in UOS.
Workaround:
Use weston instead of IAS weston:
swupd install x11-server
Use acrn-kernel to rebuild SOS kernel to replace integrated kernel. Confirm “DRM_FBDEV_EMULATION” related configs in kernel_config_sos are:
CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100
The issue will be fixed in the next release.
- 2524 - [UP2][SBL] Launching UOS hangs while weston is running in SOS
When using weston in SOS, it will hang during the UOS launch.
Impact: launching UOS hangs, and then no display in UOS.
Workaround: Use acrn-kernel to rebuild SOS kernel to replace the integrated kernel. Confirm “DRM_FBDEV_EMULATION” related configs in kernel_config_sos are:
CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100
The issue will be fixed in the next release.
- 2527 - [KBLNUC][HV]System will crash when run
crashme
(SOS/UOS) System will crash after a few minutes running stress test
crashme
tool in SOS/UOS.Impact: System may crash in some stress situations.
Workaround: None
- 2526 - Hypervisor crash when booting UOS with acrnlog running with mem loglevel=6
If we use
loglevel 3 6
to change the mem loglevel to 6, we may hit a page fault in HV.Impact: Hypervisor may crash in some situation.
Workaround: None
- 2753 - UOS cannot resume after suspend by pressing power key
UOS cannot resume after suspend by pressing power key
Impact: UOS may failed to resume after suspend by pressing the power key.
Workaround: None
Change Log¶
These commits have been added to the acrn-hypervisor repo since the v0.6 release in Feb 2019 (click on the CommitID link to see details):
c72e2e8c - doc: use the new board name for UP2 in create-up2-images.sh script
56afe97e - doc: fix broken external links
e263b554 - HV: Fix modularization vm config code lost CAT code
703b366c - dm: use power button acpi device to find its input event
8a324060 - ACRN: dm: Fix launch UOS script “-d” parameter fail issue
06118998 - OVMF release v0.7
6794660e - HV: use the common functions defined in vdev.c to reduce duplicate code
be3fbaa4 - HV: add generic vdev functions to vdev.c
731b0444 - HV: rename core.c to vdev.c
819bcec6 - HV: remove sharing_mode_vdev_array from sharing_mode.c
00f9b850 - HV: move pci_vdevs[] array from vm.h to vpci.h
8c3cfe62 - doc: add VBSK overhead analysis doc
30159d5b - doc: add some rules related to coding style
ff65a103 - HV: vm_configs array refinement
0d90515b - HV: refine is_lapic_pt
1bb15c64 - HV: modularization vm config code
35dfadc9 - dm: check SCI_EN bit of pm1_control before trigger SCI
566e8824 - dm: power button emulation by acrnctl command.
32a7b4f1 - doc: add IOC virtualization HLD
c69dab0a - hv: add support of EPT mapping of high MMIO
29b1ebcd - dm: add support of high MMIO mapping
32925c10 - dm: allocate 64bit MMIO above 4G strictly to pass OVMF check
aed75145 - dm: Limit 64 bits PCI BAR region address space
7628e790 - DM: virtio-gpio: use virtio_base as the first member of virtio_gpio
a89c41dd - HV: cleanup header files under hypervisor/common
3cb5542b - HV: cleanup header files under hypervisor/dm
e2995538 - tools: acrn-crashlog: new file to count all events happened in system
73e53232 - tools: acrn-crashlog: stop only collecting logs when exceeding configured size
e38ff18b - hv:cleanup header files for release folder
33ecdd73 - Makefile: undefine _FORTIFY_SOURCE prior using it
3b2784ec - HV: CAT: support config CAT from acrn_vm_config
43ee5590 - HV: CAT: capability enumeration
cf524e68 - HV: CAT: add platform specified info for CLOS
ae34fdd8 - doc: fix misspellings
a9482f46 - tweak GSG
2e60adef - hv: vmcs: simplify update EOI-exit bitmap
501b3f7e - hv:cleanup header files for debug folder
511d4c15 - hv:cleanup console.h
cca87579 - hv: remove the duplicated init_vm_boot_info() for partition mode
cf1515d6 - hv: optimize the assignment of load addresses for multiboot images
3f0ff2ec - hv: search additional argument when parsing seed from ABL
f5504e80 - HV: vpci_vdev_array cleanup
a25f1a40 - HV: remove default folder in configs
f9b5e21b - HV: rename board name of up2 to apl-up2
94e12275 - hv: code style fix for partition mode specific code
8478a328 - HV: return an error code when REQ state mismatch in acrn_insert_request
68652104 - ACRN: dm: Modify runC default rootfs directory
55cb7770 - ACRN: dm: Add new capabilities for runC container
5690b762 - ACRN: dm: Change runC container’s start arguments
6e919d2a - ACRN: dm: Add launch container method in script
f95da183 - dm: acrn-tool: Add del runC configuration in acrnctl del
a0efd3e5 - dm: acrn-tool: Add new parameter for acrnctl add
2f7ed65f - DM: Attestation Keybox support in SOS DM
987ddafa - hv: vlapic: refine apicv_post_intr to internal function
5dd6e79f - hv: vlapic: refine vlapic_enabled to internal function
e218efd5 - hv: vm: move vm_active_cpus to vm.h
780f520f - DM: virtio-gpio: return a valid length for GPIO request
8bc0e128 - HV: remove pbdf from struct pci_vdev
4d119853 - HV: define function bdf_is_equal() to compare bdf
02866353 - HV: fix comments issue
1454dd37 - HV: this patch fixes bar address non-zero checking for 64-bit bars
b43f5cba - tools: do not include unnecessary files in release build
eee7d8e7 - hv: debug: mark the mmio address for npk log as hv owned
bd1e7a46 - hv:cleanup header files for arch folder
ac7a8a72 - hv:merge MACROs E820_MAX_ENTRIES and NUM_E820_ENTRIES
fb92d55b - doc: fix formatting of up2 doc
1d783d3d - doc: add 0.6 to doc version menu
4928be5f - doc: update partition mode config on up2
02ae775b - hv: pae: fix a issue of loading pdptrs when handle cr4
25385241 - hv: pae: fix bug when calculate PDPT address
21ae3e74 - DM: virtio-gpio: add print log
6b0643b5 - DM: virtio-gpio: implementation of gpio operations
77e17b5d - DM: virtio-gpio: gpio initialization.
57029315 - DM: virtio-gpio: virtio framework implementation.
5300e911 - config: enable parsing dmar table dynamically on UP2
8e8ed07d - dm: implement power button for power management
b24a8a0f - hv:cleanup header file for guest folder
75f6cab5 - hv:cleanup header file for per_cpu.h
c093638b - hv:merge two header files to one with the same name
04c30fb3 - hv:move 2 APIs from hypervisor.h to guest_memory.c
07656a9c - DM: modify acpi for IASL to support ACPI6.3
827fffed - hv: exception: fault type exception should set resume flag in rflags
26385183 - acrn.conf: clean-up SOS kernel options (EFI platforms)
caab595e - hv: vlapic: properly initialize DCR
614b2ea8 - version: 0.7-unstable