ACRN v0.8 (Apr 2019)¶
We are pleased to announce the release of Project ACRN version 0.8.
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.8 GitHub release page or use Git clone and checkout commands:
git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v0.8
The project’s online technical documentation is also tagged to correspond with a specific release: generated v0.8 documents can be found at https://projectacrn.github.io/0.8/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/.
ACRN v0.8 requires Clear Linux OS version 28600.
Version 0.8 New Features¶
GPIO Virtualization¶
GPIO virtualization is supported as para-virtualization based on the Virtual I/O Device (VIRTIO) specification. The GPIO consumers of the Front-end are able to set or get GPIO values, directions, and configuration via one virtual GPIO controller. In the Back-end, the GPIO command line in the launch script can be modified to map native GPIO to UOS.
Enable QoS Based on runC Container¶
ACRN supports Device-Model QoS based on runC container to control the SOS resources (CPU, Storage, MEM, NET) by modifying the runC configuration file.
S5 Support for RTVM¶
ACRN supports a Real-time VM (RTVM) shutting itself down. A RTVM is a kind of VM that the SOS can’t interfere at runtime, and as such, can only power itself off internally. All poweroff requests external to the RTVM will be rejected to avoid any interference.
Document Updates¶
Several new documents have been added in this release, including:
New Features Details¶
923 - GPU Mediator shall be compatible with operation of graphics safety watchdog
1409 - Add support for profiling [sep/socwatch tools]
1568 - Implement PCI emulation functionality in HV for UOS passthrough devices and SOS MSI/MSI-X remapping
1867 - vMSR code reshuffle
2020 - DM: Enable QoS in ACRN, based on runC container
2512 - GPIO virtualization
2611 - hv: search additional argument when parsing seed from ABL.
2868 - OVMF release v0.8
2708 - one binary for SBL and UEFI
2713 - Enable ACRN to boot Zephyr
2792 - Pass ACRN E820 map to OVMF
2865 - support S5 of Normal VM with lapic_pt
Fixed Issues Details¶
1996 - [APLNUC/KBLNUC/APLUP2]There is an error log when using “acrnd&” to boot UOS
2052 - tpm_emulator code reshuffle
2474 - Need to capture dropped sample info while profiling
2490 - systemd virtualization detection doesn’t work
2522 - Start ias in SOS, no display
2523 - UOS monitor does not display when using ias
2524 - [UP2][SBL] Launching UOS hang while weston is running in SOS
2597 - Return PIPEDSL from HW register instead of cached memory for Guest VGPU
2704 - Possible memory leak issues
2760 - [UP2]{SBL] make APL-UP2 SBL acrn-hypervisor sos image failed.
2772 - Enable PCI-E realtek MMC card for UOS
2780 - [APL_NUC KBL_NUC EFI_UP2]Update clear Linux missing acrn.efi file
2792 - Pass ACRN E820 map to OVMF
2829 - The ACRN hypervisor shell interactive help is rather terse
2830 - Warning when building the hypervisor
2851 - [APL/KBL/UP2][HV][LaaG]Uos cannot boot when acrnctl add Long_VMName of more than 26
2870 - Use ‘sha512sum’ for validating all virtual bootloaders
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.
- 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, SOS can’t use USB keyboard and mouse
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.
- 2527 - System will crash after a few minutes running stress test
crashme
tool in SOS/UOS. System stress test may cause a system crash.
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):
296c974d - OVMF release v0.8
e7f77244 - Tools: acrnctl fix return value when it fails to execute the commands
eea0ecd2 - Tools: acrnctl fix return value when it fails to execute the commands.
cee45a80 - hv: add default handlers for PIO/MMIO access
01b28c8e - doc: Add tutorial about how to use CAT on UP2
79582b99 - doc: update software design guidelines
efad4963 - DM: Add -A to support S5 of hard rt vm
382acfaf - HV: Using INIT to kick vCPUs off when RTVM poweroff by itself
2771b46b - HV: Add one delmode parameter to make_reschedule_request
ef9be020 - HV: Introduce one new API send_single_init
8ad5adce - HV: Set vm state as with VM_POWERING_OFF when RTVM poweroff by itself
83d11bbf - HV: Register S5 pio handler for dm-launched RTVM
1c0d7f78 - HV: HV: make io_read_fn_t return true or false
3b2ad677 - HV: make io_write_fn_t return true or false
ed286e32 - HV: Introduce a new API is_rt_vm
2e4d7eb5 - DM: Add new flag GUEST_FLAG_RT for RTVM
71f75ebf - Tools: acrnlog: fix confusing message “bad file descriptor” when start acrnlog
9f234222 - ACRN: dm: Enable mount namespace for container.
dde326ec - Acrn: dm: Add new start parameter in sample args
e91d7402 - hv: Debug messages from a CPU are overlapped with other CPUs messages
558a1788 - doc: update coding guidelines
868778a6 - hv: fix vulnerability when VM is destroyed
5a7be9b8 - tools: acrnctl fix cmd buffer is truncated when vmname too long
b2f2d952 - tools: acrnctl restrict length of vmname to 32 bytes
8109c2e9 - DM: restrict vmname size to 32 bytes
b1586ccc - HV: move MAX_CONFIG_NAME_SIZE to acrn_common.h
c55308bd - DM: use soft link of acrn_common.h in HV
06761102 - dm: remove smbios
3effbb05 - Revert “hv: vmsr: add IA32_MISC_ENABLE to msr store area”
40168e73 - hv: vlapic: remove TPR set/get API
4a683ed1 - hv: vlapic: minor fix for update_msr_bitmap_x2apic_apicv
20164799 - dm: leave a gap for 32-bit PCI hole in E820 map
3be6c659 - HV: merge partition_mode.c and sharing_mode.c’s code into vpci.c
320bf183 - HV: rename pci_priv.h to vpci_priv.h
1a3c9b32 - HV: rename vpci files
c6a60dd2 - HV: remove all CONFIG_PARTITION_MODE from dm/vpci code
691468a3 - HV: Remove hypervisor.h from bsp folder
3d85d72f - doc: update OVMF image location
d4ce780e - doc: update the instructions to increase the size of a UOS disk image
80dc2c85 - doc: add some rules related to language extensions
3026a372 - DOC:Update standard reference of SW design guidelines
fddc5b91 - doc: update UP2 sample directory name in create-up2-image.sh
904c9e29 - doc: add more details to the FAQ (for version 0.7)
c47efa3f - Add new FAQ
98b3d98a - hv: vmsr: add IA32_MISC_ENABLE to msr store area
273381b3 - hv: vmsr: rename msr_num to msr_index in struct msr_store_entry
5585084c - hv:move ‘udelay’ to timer.c
370998ba - hv: replace MEM_2K with a new macro MAX_BOOTARGS_SIZE for bootargs size
12d97728 - DM: virtio-gpio: export GPIO ACPI device
014e611b - DM: virtio-gpio: add IRQ statistics
83a98acb - DM: virtio-gpio: support reading value from IRQ descriptor
d34b3ebd - DM: virtio-gpio: emulate GPIO IRQ controller
92a0a399 - DM: virtio-gpio: GPIO IRQ initialization.
9480af8d - DM: virtio-gpio: setup two virtqueues for gpio irq
e381aef2 - hv: seed: remove unused seed parsing source files
0947fbab - HV: Fix a compiler warning in firmware.h
071ce15e - dm: build E820 map for OVMF
4dd13310 - dm: remove empty UOS E820 entries
643513f3 - dm: update UOS default E820 map
263b486a - dm: pci: add MMIO fallback handler for 64-bit PCI hole
82e42cfa - dm: clean up mem.c
890d4022 - dm: remove GUEST_CFG_OFFSET
f97ba340 - Doc: Add tutorial about using zephyr as uos
410c76ac - hv: enhance ACRN shell interactive help
a0de49d0 - hv: fix potential buffer overflow in sbl_init_vm_boot_info()
93ed2af1 - hv: passthru TSC_ADJUST to VM with lapic pt
f32b59d7 - hv: disable mpx capability for guest
71ce4c25 - HV: unify the sharing mode and partition mode coding style for similar functions
026250fd - HV: centralize the pci cfg read/write sanity checking code
a403128a - HV: remove vpci ops
aa1ee942 - HV: declare and export vpci ops functions as global instead of static local
a7f528cf - HV: remove vdev ops for partition mode
b1cc1881 - hv: Use domain/device specific invalidation for DMAR translation caches
5c046879 - hv: minor fixes to a few calls to strncpy_s()
5fdc7969 - doc: add tutorial on how to increase the UOS disk size
657ac497 - doc: add rdmsr/wrmsr to the “ACRN Shell Commands” documentation
90b49375 - doc: add rules related to implementation-specific behaviors
e131d705 - hv: vmconfig: minor fix about regression of commit 79cfb1
9abd469d - config: unify board names to lowercase
5398c901 - hv: remove CONFIG_PARTITION_MODE for pre-launched VM vE820 creation
ca6e3411 - HV: add vrtc for sharing mode
1b79f28e - hv: update CR0/CR4 on demand in run_vcpu()
19c53425 - HV: remove vdev ops for sharing mode
eb4f4698 - HV: add const qualifier for the deinit vdev op functions
b2b1a278 - HV: remove intercepted_gpa and intercepted_size from struct pci_msix
5767d1e1 - HV: extract common code blocks to has_msi_cap and has_msix_cap functions
79cfb1cf - hv: vmconfig: format guest flag with prefix GUEST_FLAG_
c018b853 - hv: vmtrr: hide mtrr if hide_mtrr is true
906c79eb - hv: vpci: restore vbdf when pci dev un-assigned from uos
7669a76f - dm: passthru: pass pbdf when reset msi/msix interrupt
cd360de4 - hv: fix wrong comment message about CLOS usage in vm config
190b0940 - Makefile: build for apl-nuc by default
21d3dc68 - hv: seed: refine header file
0fb21cfa - Tools: Acrnd fix reporting unnecessary error on NUC and UP2
ff41c008 - hv: trusty: refine control registers switching method
4157b843 - doc: add some rules related to naming convention
518a82d8 - hv: cleanup some hva/hpa conversion code
e9335fce - doc: fix utf-8 punctuation, branding, spelling
9e78ad52 - doc: fix wrong description of trusty’s memory mapping
fb3e47fd - doc: add v0.7 version to master branch (/latest)
5e37c463 - version: 0.8-unstable
b147c5c6 - DM: Mark thre_int_pending as true when THR is empty
9b1e2f4c - remove apl_sdc_stable branch story
53972001 - DM: fix memory leak
436c30e4 - doc: add 0.7 release notes
74023a9a - hv: vtd: check bus number when assign/unassign device
93386d3c - ACRN/DM: Destroy the created pci_device iterator to fix memory leak in passthru_init
31cb4721 - acrn/dm: Remove the memory leak in gvt mediator
065e16d3 - Makefile: make UP2 sample directory name consistent with board name
20249380 - audio-mediator: load updated audio kernel modules Audio kernel has updated name and add two new kernel modules from SOS 28100
95d1e402 - hv: refactor seed management
4d0419ed - dm: passthru: fix potential mem leaks
caa291c0 - HV: some minor code cleanup for partition mode code
82789f44 - HV: declare and export partition mode’s vdev functions as global instead of static local
93f6142d - HV: declare and export sharing mode’s vdev functions as global instead of static local
562628b9 - HV: remove the populate_msi_struct() function
3158c851 - HV: Modularize boot folder
286731d9 - hv:move instr_emul_ctxt instance to struct vcpu
5331b395 - hv:remove ‘cpu_mode’ from struct vm_guest_paging
ce387084 - hv: remove CONFIG_PLATFORM_[SBL|UEFI] and UEFI_STUB
334382f9 - efi-stub: minor change for uefi refactor
9b24620e - hv: merge SBL and UEFI related stuff under boot
56d8b08b - hv: merge SBL and UEFI related stuff under bsp
23e85ff1 - Makefile: remove deprecated PLATFORM
bd24e2de - tools: acrnctl fix potential buffer overflow
78890622 - hv: vlapic: minor fix about detect_apicv_cap
f769f745 - hv: vlapic: add combined constraint for APICv
6f482b88 - dm: virtio: add memory barrier before notify FE
7ab6e7ea - dm: usb: fix possible memory leak
694fca9c - DM: Add sample script to launch zephyr as guest
204f9750 - tools: acrnd: Fix launch UOS by timer list without fork()
5d6f6ab7 - tools: acrn-manager: fix a race condition on updating VM state
d5ec844f - tools: acrn-manager: Replace pdebug with explicit err msg
48774f71 - tools: acrn-manager: print more debug information
2b74e1a9 - HV: PAE: Add stac()/clac() in local_gva2gpa_pae
18ba7524 - dm: virtio-net: fix memory leak
31f04e1a - doc: fix typos in coding guidelines
b75d5567 - Documentation: update the “ACRN Shell Commands” user guide
5f51e4a7 - pci.c: assert MSIX table count <= config max
137892fd - hv: Remove multiple definitions for dmar translation structures
18b619da - doc: add the doc for ‘Error Detection and Handling’
72fbc7e7 - doc: add some comments for coding guidelines
e779982c - doc: use the new board name for UP2 in create-up2-images.sh script
bf1aa5c1 - hv: destroy IOMMU domain after vpci_cleanup()
c0400b99 - HV: Fix modularization vm config code lost CAT code
649406b0 - HV: refine location of platform_acpi_info header
ff9ef2a1 - doc: fix broken external links
85b3ed3e - doc: update the format in coding style part
f6a989b7 - dm: use power button acpi device to find its input event
55f52978 - hv:move several tsc APIs to timer.c
36f6a412 - hv:validate ID and state of vCPU for related APIs
9922c3a7 - HV: correct COM_IRQ default config type
741501c2 - hv: refine vlapic_calc_dest()
f572d1ec - [RevertMe] dm: pci: restore workaround when alloc pci mem64 bar
ca3d4fca - hv: vlapic: move LVT IRQ vector check to vlapic_fire_lvt
473d31c0 - hv: vlapic: add vector check for x2apic SELF IPI
e5d3a498 - hv: vlapic: call vlapic_accept_intr directly in vlapic_set_error
2b35c078 - hv: do EPT mapping only for physical memory backed GPA on pre-launched VMs
da14c961 - hv: simplify get_primary_vcpu and vcpu_from_vid
3d0d8609 - hv: vlapic: correct wrong use of vector
0943a836 - [hv] set ECX.bit31 to indicate the presence of a hypervisor
f6758fd6 - hv: fix a redundant check in general_sw_loader
b49df10a - hv: Remove redundant get_dmar_info API calls
308d4e8c - hv:move forward the initialization for iommu & ptdev
bc107105 - doc: fix the typo related to tab