ACRN v0.6 (Feb 2019)¶
We are pleased to announce the release of Project ACRN version 0.6.
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.6 GitHub release page or use Git clone and checkout commands:
git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v0.6
The project’s online technical documentation is also tagged to correspond with a specific release: generated v0.6 documents can be found at https://projectacrn.github.io/0.6/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/.
ACRN v0.6 requires Clear Linux OS version 27600.
Version 0.6 New Features¶
Enable Privileged VM support for real-time UOS in ACRN: Initial patches to enable a User OS (UOS) running as a virtual machine (VM) with real-time characteristics, also called a “Privileged VM”. We’ve published a tutorial. More patches for ACRN real time support will continue.
Document updates: Several new documents have been added in this release, including:
Running Automotive Grade Linux as a VM
Using PREEMPT_RT-Linux for real-time UOS
A Wiki article about Porting ClearLinux/ACRN to support Yocto/ACRN
888 - Security: Service OS Support for Platform Security Discovery
1498 - add watchdog MSI and INTR support in DM
2056 - Enable SMAP in hypervisor
2288 - Display interface - MIPI support
2343 - Rework TMR and EOI_EXIT_BITMAP updating logic
2344 - Add UP2 ACRN SBL binary to E2E build
2358 - Remove the flooding kernel message from vhm for memory setup
2395 - change DISCARD to synchronous mode
2351 - Enable post-launched hybrid mode
Fixed Issues¶
1775 - [APL UP2]ACRN debugging tool - acrntrace cannot be used in SOS
1776 - [APL UP2]ACRN debugging tool - acrnlog cannot be used in SOS
1796 - APL NUC fails to reboot sometimes
2043 - Fix incorrect vm_id captured when sampling PMU data
2086 - enable/disable snoop control bit per vm
2157 - Profiling: fix the profiling tool crash by page faults
2168 - Modify Makefile to save debug files
2200 - Won’t build using ubuntu 16.04 LTS and binutils 2.26.1
2237 - Don’t export two dma_bufs for the same importer in sos kernel
2257 - Profiling code clean up
2277 - [APLNUC]Launch UOS with 5G memory will hang 2 minutes
2298 - Hardcodes path to iasl
2341 - vm exit trace position is not correct
2349 - SOS failed boot up with RELOC config enabled.
2355 - Switch the default up-notification vector from 0xF7 to 0xF3
2356 - fail to start UOS on the renamed device name of VHM module
2371 - kconfig oldconfig doesn’t work correctly
2389 - Need to add the dependency of $(LIB_FLAGS)
2410 - Launch UOS will occur page fault error when use the hypervisor build on Ubuntu
2427 - Remove redundant apicv code from legacy vInterrupt inject path
Known Issues¶
- 1319 - SD card pass-through: UOS can’t see SD card after UOS reboot.
SD card could not be found after UOS reboot in pass-through mode.
Impact: There is no SD card after UOS reboot.
Workaround: None. The issue will be fixed in the next release.
- 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.
- 1774 - UOS can’t stop by command: acrnctl stop [vm name] in SOS
After launching UOS in SOS by “acrnctl start” command, UOS VM failed to be stopped by “acrnctl stop” command.
Impact: Can’t stop UOS in SOS.
Workaround: None. The issue will be fixed in the next release.
- 1780 - Some video formats cannot be played in SOS
Video files with these encodings are not supported in the SOS: H265_10bits, VP8, VP9, VP9_10bits, H265.720p.
Impact: Cannot play those formats of videos in SOS.
Workaround: None. The issue will be fixed in the next release.
- 1782 - UOS failed to get IP address with the pass-through network card
After a network card is pass-through to UOS, it fails to get an IP address in UOS.
Impact: Cannot use network in UOS.
Workaround: None. The issue will be fixed in the next release.
- 1991 - Input is useless 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: Failed to use UART for input in corner case.
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.
- 2276 - OVMF failed to launch UOS on UP2.
UP2 failed to launch UOS using OVMF as virtual bootloader with acrn-dm.
Impact: UOS cannot boot up using OVMF
Workaround: Use VSBL as virtual bootloader
- 2278 - [KBLNUC] Cx/Px is not supported on KBLNUC
C states/P states is not supported on KBL NUC.
Impact: Power Management states related operations cannot be using in SOS/UOS on KBLNUC
Workaround: None
- 2279 - [APLNUC]After exiting UOS with mediator Usb_KeyBoard and Mouse, SOS cannot use the Usb_KeyBoard and Mouse
After exiting UOS with mediator Usb_KeyBoard and Mouse, SOS cannot use the Usb_KeyBoard and Mouse. Reproduce Steps as below:
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 access USB keyboard and mouse.
Impact: SOS cannot use USB keyboard and mouse in such case.
Workaround: Unplug and plug-in the USB keyboard and mouse after exiting UOS.
- 2338 - [UP2]Lost 2G memory in SOS when using SBL as bootloader on UP2.
After using SBL as bootloader to boot UP2, SOS only has 2G memory with 4G physical memory bank.
Impact: lost 2G memory in SOS.
Workaround: Modify SBL Memory setting file “CfgData_Ext_Up2.dlt”, see details in issue comments.
- 2516 - [UP2][SBL] System hang with DP monitor connected
For UP2, system will occur crash when DP monitor is connected. It will be triggered immediately by running command “cat /sys/kernel/debug/dri/0/i915_display_info” in SOS.
Impact: Cannot use DP monitor.
Workaround: Remove enable_initial_modeset for UP2 platform. You can apply 4b53ed67 to rebuild UP2 images.
- 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. To confirm “DRM_FBDEV_EMULATION” related configs in kernel_config_sos should as below:
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 hang while weston is running in SOS
When using weston in SOS, it will hang during the UOS launch.
Impact: launching UOS hang, 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 as below:
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 situation.
Workaround: None
- 2528 - [APLUP2] SBL (built by SBL latest code) failed to boot ACRN hypervisor
SBL built by latest slimbootloader code (HEAD->ad42a2bd6e4a6364358b9c712cb54e821ee7ee42) failed to boot acrn hypervisor.
Impact: UP2 with SBL cannot boot acrn hypervisor.
Workaround: Use SBL built by earlier slimbootloader code (commit id:edc112328cf3e414523162dd75dc3614e42579fe). This folder version can boot acrn hypervisor normally.
Change Log¶
These commits have been added to the acrn-hypervisor repo since the v0.5 release in Jan 2019 (click on the CommitID link to see details):
ea250c51 doc: fixes to rt-linux tutorial
1a4a1c30 Need to delete ‘# CONFIG_BLK_DEV_NVME is not set’ to enable NVME driver
37ce259f modify create-up2-images scripts
eb7091bb HV: add rdmsr/wrmsr debug cmd
648450c6 HV: cpu: add msr_read_pcpu()& msr_write_pcpu()
39ffd29a schedule: add magic number at the bottom of schedule stack
efc64d77 hv: fix host call stack dump issue
5214a60b hv: replace improper use of ASSERT with panic for parse_madt
9291fbe4 hv: multiboot: replace improper use of ASSERT with panic
2474c601 hv: replace improper use of panic with ASSERT
a01c3cb9 doc: change term of vm0 to sos_vm
7da9161d hv:no need to use lock for the bit operations of local variable
e2cb6acb doc: add Trusty ACRN doc
9c3c316f doc: add rt-linux tutorial
0881bae7 doc: fix correct use of Clear Linux OS
fc887ead doc: update coding guidelines
72faca50 doc: update documents for “–lapic_pt” feature
2ffc683d hv: move some api declaration from mmu.h to ept.h
615c2bf8 hv:move e820 related macro and structure to e820.h
2b2dbe43 hv:move some files to guest folder
e9bb4267 hv:move vpic.h & vioapic.h to dm folder
89b6dc59 HV: MISRA clean in reloc.c
723ff1f4 HV: modularization improve UEFI macro control code
2a25f4e9 Doc: Remove CL release number from GSG document
fea541bd hv: exception: low prioirity exception inject fix
c6d2908f hv: vmexit: add handler for vmexit not supported for guest
cc2c0c3a hv:Move several inline APIs from vm.h to *.c
61552458 Kconfig: enlarge range of maximum number of IOMMU
69371f41 EFI: fix potential memory overwrite due to mmap table
b038ade2 hv: fix misra-c violations in reused partition mode functions
7d4ba5d7 Documentation build tools: update min version for kconfiglib
878c4e2d dm: add example script to launch vm for realtime scenarios
c873d60a dm: add option “lapic_pt” to create VM for realtime scenarios
8925da64 dm: adapt mptable generation for VM with lapic pt
e2cecfb5 hv: send IPI instead of irq injection to notify vcpu with lapic pt
16df57aa hv: don’t remap msi for pt devices if lapic_pt
a073ebee hv: extend lapic pass-through for DM launched VM
c853eb4b hv: remove redundant code for virtual interrupt injection
6d5456a0 hv: Bit Representation for IOAPIC RTE
7d57eb05 hv: Add bit representation for MSI addr and data
68250430 hv:Move severl variable declaration for boot code
c20d095a HV: refine sos_vm config header
66e00230 HV: sanitize vm config
285b64fa replace arch_switch_to with pure asm code instead of inline asm
c233bf54 make sure secondary CPU’s stack is aligned with CPU STACK
ee066a7f hv: fix possible buffer overflow in ‘vcpu_set_eoi_exit()’
88eeae3f hv: remove unused fields in ‘struct acrn_vcpu’
5e99565b security: Increase buffer size to avoid buffer overflow error
d0eb83aa HV: move Kconfig IOREQ_POLLING to acrn vm config
6584b547 Makefile: add missing dependency
c43bca9c doc: add a FAQ doc
bb8f5390 doc: add AGL as VMs on ACRN doc
5c5f4352 HV: modify RELOC kconfig option default to “enable”
8f22a6e8 HV: fix per-cpu stack relocation in trampoline.c
41dd38ba HV: init_paging() wrongly calcuate the size of hypervisor
9feab4cf HV: adjust the starting addr of HV to be 2M-aligned
07f14401 HV: save efi_ctx into HV to use after init_paging()
a445a4ea EFI: Allocate EFI boot related struct from EFI allocation pool
ad0f8bc3 EFI: Allocate 2M aligned memory for hypervisor image
912be6c4 tools: respect CFLAGS and LDFLAGS from environment
899c9146 hv:Fix MISRA-C violations in vm.h
5ba4afcf Use $(MAKE) when recursing
d0c9fce7 doc: add more rules in coding guidelines
3c605127 io_emul: reorg function definition to pass partition mode build
15030f6f io_emul: reshuffle io emulation path
fb41ea5c io_emul: remove pending_pre_work
4fc54f95 schedule: add full context switch support
21092e6f schedule: use per_cpu idle object
5e947886 hv: vlapic: remove calcvdest
fd327920 kconfig: update .config on missed or conflicting symbol values
ca925f0d dm: storage: change DISCARD to synchronous mode
46422692 dm: vhpet: add vHPET support
0343da8c dm: vhpet: add HPET-related header files
3fe4c3f2 dm: provide timer callback handlers the number of expirations
0f7535fd dm: add absolute timer mode
d1e1aa30 dm: create mevent’s pipe in non-blocking mode
a9709bf8 hv: Makefile: add the dependency of $(LIB_FLAGS)
b489aec3 hv: idt: separate the MACRO definition
862ed16e Makefile: add rules for installing debug information
173b534b HV: modularization cleanup instr_emul header file
18dbdfd5 HV: replace lapic_pt with guest flag in vm_config
68aa718c HV: replace bootargs config with acrn_vm_os_config
23f8e5e5 HV: replace memory config with acrn_vm_mem_config
253b2593 HV: remove vm_config pointer in acrn_vm struct
7bf9b1be HV: enable pcpu bitmap config for partition mode
bc62ab79 HV: remove unused vm num config
2e32fba5 HV: remove sworld_supported in acrn_vm_config
ec199d96 HV: add get_sos_vm api
f3014a3c HV: show correct vm name per config
e6117e0d HV: refine launch vm interface
49e6deaf HV: rename the term of vm0 to sos vm
55e5ed2e hv:move ept violation handler to io_emul.c
1d98b701 hv: move ‘setup_io_bitmap’ to vm.c
de4ab6fd hv:modulization for IO Emulation
808d0af2 HV: check to avoid interrupt delay timer add twice
d9c38baf HV: remove unused mptable info
a8e4f227 HV: add new acrn_vm_config member and config files
c4a230f3 HV: rename the term of vm_description to vm_config
fe35dde4 Makefile: support SBL binary for E2E build
13c44f56 acrn/dm: Check device file of /dev/acrn_hsm to determine the path of offline VCPU
ca328816 acrn/dm: Add the check of acrn_vhm/acrn_hsm to open the VHM driver
e4a3a634 acrn/vhm: change the default notification vector to 0xF3
f45605dd HV: modularization to separate CR related code
8265770f hv:Change acrn_vhm_vector to static
b22c8b69 hv: add more MSR definitions
6372548e hv:Fix violation “Cyclomatic complexity greater than 20” in instr_emul.c
ae144e1a hv:fix MISRA-C violation in virq.c
6641bc79 hv: remove ACRN_REQUEST_TMR_UPDATE and unnecessary codes
fc61536b hv: rework EOI_EXIT_BITMAP update logic
f15cc7d6 hv: set/clear TMR bit like hardware behave
c9b61748 hv: Make reserved regions in E820 table to Supervisor pages
4322b024 version: 0.6-unstable