ACRN v1.2 (Aug 2019)¶
We are pleased to announce the release of ACRN version 1.2.
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 v1.2 GitHub release page) or use Git clone and checkout commands:
git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v1.2
The project’s online technical documentation is also tagged to correspond with a specific release: generated v1.2 documents can be found at https://projectacrn.github.io/1.2/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/. ACRN v1.2 requires Clear Linux* OS version 30690.
Version 1.2 Major Features¶
What’s New in v1.2¶
Support OVMF as virtual boot loader for Service VM to launch Clearlinux, VxWorks or Windows, Secure boot is supported
Support Kata container
Windows as a Guest (WaaG): USB host (xHCI) mediator
Virtualization supports Always Running Timer (ART)
Various bug fixes and enhancements
Document Updates¶
We have many reference documents available, including:
How to sign binaries of the Clear Linux image
Using Celadon as User VM
We also updated the following documents based on the newly defined Usage Scenarios in this release, including:
Using Hybrid mode on NUC (removed in v1.7)
Launch Two User VMs on NUC using SDC2 Scenario (removed in v1.7)
New Features Details¶
3051 - Kata Container Storage: Support rescan feature for virtio-blk
3163 - WaaG: USB host support
3401 - System is lagging when execute “fdisk -l” to query disk information with multiple USB devices after launch or reboot UOS
3486 - USB mediator: mediator mode can not recognize the SSD disk in RTVM and LaaG
3501 - Virtualization supports Always Running Timer (ART)
3505 - Succeed to reboot the whole system while execute reboot command in SOS
3506 - OVMF release v1.2
Fixed Issues Details¶
2326 - There is no Read value output in the log when test “ST_PERF_USB2/3_mass_storage_protocol_Read_Large_File_as_Host”
2927 - The android guest will hung after test USB mediator camera[Frequency:20%]
3027 - Reboot SOS Failed[Frequency:10%]
3152 - Use virtio-blk instead passthru devices to boot RT
3181 - [auto][sit][daily]Case “Hypervisor_Launch_RTVM_on_SATA_Storage” sata disk can not passthru
3239 - HV can not produce #GP correctly sometimes
3268 - dm: add virtio-rnd device to command line
3277 - Potential Memory Leaks Found
3279 - AcrnGT causes display flicker in some situations
3280 - AcrnGT holding forcewake lock cause high cpu usage gvt workload thread
3281 - AcrnGT emulation thread causes high cpu usage when shadowing ppgtt
3283 - New scenario-based configurations lack documentation
3341 - Documentation on how to run Windows as a Guest (WaaG)
3370 - vm_console 2 cannot switch to VM2’s console in hybrid mode
3374 - Potential interrupt info overwrite in acrn_handle_pending_request
3379 - DM: Increase hugetlbfs MAX_PATH_LEN from 128 to 256
3392 - During run UnigenHeaven 3D gfx benchmark in WaaG, RTVM latency is much long
3466 - Buffer overflow will happen in ‘strncmp’ when ‘n_arg’ is 0
3467 - Potential risk in virtioi_i2c.c & virtio_console.c
3469 - [APL NUC] Display goes black while booting; when only one display monitor is connected
3473 - dm: bugfix for remote launch guest issue
3480 - Add script to
acrn-config/target
andacrn-config/host/board_confing
3482 - Acrn-hypervisor Root Directory Clean-up and Create misc/ folder for Acrn daemons, services and tools
3512 - hv: hypervisor console may hang in some platforms
Known Issues¶
- 3465 - HV: reinit pbar base if a device reset is detected
When a passthru pci device is reset, its physical bar base address may be reset to 0, with vpci bar emulation, vpci needs to reinit the physical bar base address to a valid address if a device reset is detected.
Impact: Fail to launch Clear Linux Preempt_RT VM with
reset
passthru parameterWorkaround: Issue resolved on ACRN tag:
acrn-2019w33.1-140000p
- 3520 - bundle of “VGPU unconformance guest” messages observed for “gvt” in SOS console while using UOS
After the need_force_wake is not removed in course of submitting VGPU workload, it will print a bundle of below messages while the User VM is started.
gvt: vgpu1 unconformance guest detectedgvt: vgpu1 unconformance mmio 0x2098:0xffffffff,0x0Impact: Messy and repetitive output from the monitor
Workaround: Need to rebuild and apply the latest Service VM kernel from the
acrn-kernel
source code.
- 3533 - NUC hang while repeating the cold boot
NUC will hang while repeating cold boot operation.
Before begin coldboot, enable no passwd ssh for SOS and RTVM.
Boot up Service VM
Boot up Zephyr guest with UUID “d2795438-25d6-11e8-864e-cb7a18b34643”
Boot up RTVM with UUID “495ae2e5-2603-4d64-af76-d4bc5a8ec0e5”
Reboot RTVM and then will restart the whole system
After Service VM boot up, return to step 3
Impact: Cold boot operation is not stable for NUC platform
Workaround: Need to rebuild and apply the latest Service VM kernel from the
acrn-kernel
source code.
3576 - Expand default memory from 2G to 4G for WaaG
Impact: More memory size is required from Windows VM
Workaround: Issue resolved on ACRN tag:
acrn-2019w33.1-140000p
3609 - Sometimes fail to boot os while repeating the cold boot operation
Workaround: Please refer the PR information in this git issue
3610 - LaaG hang while run some workloads loop with zephyr idle
Workaround: Revert commit
bbb891728d82834ec450f6a61792f715f4ec3013
from the kernel
3611 - OVMF launch UOS fail for Hybrid and industry scenario
Workaround: Please refer the PR information in this git issue
Change Log¶
These commits have been added to the acrn-hypervisor repo since the v1.1 release in June 2019 (click on the CommitID link to see details):
2dbc8f03 - doc: remove references to 2.0 in intro
2d61e512 - doc: Release Notes v1.2
f33886d9 - doc: add new scenario-based intro
5b3b8efe - doc: incorporate new scenario-based hardware doc
0b9257df - doc: update Getting started guide for Intel NUC software setup
39aa209d - doc: update Getting started guide for Intel NUC software setup
a55436b5 - doc:update Getting started guide for Intel NUC software setup
664fa27d - doc: update Using SBL on UP2 Board
e9e59399 - doc: add limitation for UEFI services
63e66e65 - doc: hybrid mode scenario introduction
6b756b8b - doc: add the SDC2 scenario doc into the navigation
a3251d85 - doc: incorporate scenario-based doc update
defac8d1 - doc: apply edits to SDC2 scenario doc
da744ac3 - doc: adding guide to launch 2 Linux UOSes using SDC2 scenario
b5140fdd - doc: update v1.0.1 release notes
e3349195 - doc: release notes v1.0.1
4b5a06c1 - doc: improve CSS for home page grid
f7861687 - doc: fix image proportions on home page for ie
42d7fbea - doc: fix broken links after content reorg
fd2e4391 - doc: additional doc navigation restructuring
34f9fec4 - doc: simplify navigation with restored doc org
f88348e9 - doc: continue doc restructuring
901a65cb - HV: inject exception for invalid vmcall
c4f66810 - softirq: disable interrupt when modify timer_list
f49ab66b - HV: fix highest severity flag in hybrid mode
11d4f415 - doc: Reorganize documentation site content
e188e1f2 - DM USB: xHCI: fix an error in PORTSC emulation
55a5876e - DM USB: xHCI: workaround for USB SSD which supports UAS protocol
0e2cfd2d - DM USB: add native info in control transfer logging code
87cafaea - OVMF release v1.2
52618d0a - doc: Update WaaG tutorial launch script and OVMF binary
8f65bfe6 - README: Fix Getting Started URL
363daf6a - HV: return extended info in vCPUID leaf 0x40000001
accdadce - HV: Enable vART support by intercepting TSC_ADJUST MSR
4adc8102 - Makefile: Add install for uefi firmware
18b4e302 - acrn-config: add README for scenario_config and launch_config
a03b1341 - acrn-config: generate a patch and apply to acrn-hypervisor
8adefe26 - acrn-config: generate board information on target board
107c406b - dm: array bound checking to avoid buffer overflow
493ddefd - dm: fix pointer not checked for null before use
d4f44bc7 - hv: fix debug message format in ‘init_pci_pdev_list’
bde1d4b1 - acrn-hv: code review fix lib/string.c
653aa859 - DM: monitor support force stop
8b27daa7 - tools: acrnctl add ‘–force’ option to ‘stop’ cmd
59fd4202 - tools: add force parameter to acrn VM stop operations
d1c8a514 - doc: Add ovmf option description
9139f94e - HV: correct CONFIG_BOARD string of apl up2
8ee1615e - doc: fix issues from moving tools to misc/tools
f44517c7 - final edits 3
879d0131 - final edit 2
1ccb9020 - final edits
d485ed86 - edits
28e49ac1 - more edits
cc2714ee - edits from David review
7ee02d8e - Image resize
87162e8b - Making three images even smaller
42960ddc - Adjust picture size for SGX
d0f7563d - Corrected images and formatting
ce7a126f - Added 3 SGX images
01504ecf - Initial SGX Virt doc upload
a9c38a5c - HV:Acrn-hypervisor Root Directory Clean-up and create misc/ folder for Acrn daemons, services and tools.
555a03db - HV: add board specific cpu state table to support Px Cx
cd3b8ed7 - HV: fix MISRA violation of cpu state table
a092f400 - HV: make the functions void
d6bf0605 - HV: remove redundant function calling
c175141c - dm: bugfix for remote launch guest issue
4a27d083 - hv: schedule: schedule to idle after SOS resume form S3
7b224567 - HV: Remove the mixed usage of inline assembly in wait_sync_change
baf7d90f - HV: Refine the usage of monitor/mwait to avoid the possible lockup
11cf9a4a - hv: mmu: add hpa2hva_early API for early boot
40475e22 - hv: debug: use printf to debug on early boot
cc47dbe7 - hv: uart: enable early boot uart
3945bc4c - dm: array bound and NULL pointer issue fix
9fef51ab - doc: organize release notes into a folder
ff299d5c - dm: support VMs communication with virtio-console
18ecdc12 - hv: uart: make uart base address more readable
49e60ae1 - hv: refine handler to ‘rdpmc’ vmexit
0887eecd - doc: remove deprecated sos_bootargs
2e79501e - doc:update using_partition_mode_on_nuc nuc7i7bnh to nuc7i7dnb
a7b6fc74 - HV: allow write 0 to MSR_IA32_MCG_STATUS
3cf1daa4 - HV: move vbar info to board specific pci_devices.h
ce4d71e0 - vpci: fix coding style issue
a27ce27a - HV: rename nuc7i7bnh to nuc7i7dnb
dde20bdb - HV:refine the handler for ‘invept’ vmexit
16a7d252 - DM: ovmf NV storage writeback support
c787aaa3 - dm: allow High BIOS to be modifiable by the guest
12955fa8 - hv_main: Remove the continue in vcpu_thread
f0e1c5e5 - vcpu: init vcpu host stack when reset vcpu
11e67f1c - softirq: move softirq from hv_main to interrupt context
cb9866bc - softirq:spinlock: correct vioapic/vpic lock usage
87558b6f - doc: remove vuart configuration in nuc and up2
e729b657 - doc: Add ACRN tag or Clear Linux version info for some tutorials
ffa7f805 - doc: Add tutorial to learn to sign binaries of a Clear Linux image.
be44e138 - doc: update WaaG doc
a4abeaf9 - hv: enforce no interrupt to RT VM via vlapic once lapic pt
97f6097f - hv: add ops to vlapic structure
c1b4121e - dm: virtio-i2c: minor fix
d28264ff - doc: update CODEOWNERS for doc reviews
a90a6a10 - HV: add SDC2 config in hypervisor/arch/x86/Kconfig
796ac550 - hv: fix symbols not stripped from release binaries
63e258bd - efi-stub: update string operation in efi-stub
05acc8b7 - hv: vuart: bugfix for communication vuart
ecc472f9 - doc: fix format in WaaG document
7990f52f - doc: Add introduction of using Windows Guest OS
600aa8ea - HV: change param type of init_pcpu_pre
e352553e - hv: atomic: remove atomic load/store and set/clear
b39526f7 - hv: schedule: vCPU schedule state setting don’t need to be atomic
8af334cb - hv: vcpu: operation in vcpu_create don’t need to be atomic
540841ac - hv: vlapic: EOI exit bitmap should set or clear atomically
0eb08548 - hv: schedule: minor fix about the return type of need_offline
e69b3dcf - hv: schedule: remove runqueue_lock in sched_context
b1dd3e26 - hv: cpu: pcpu_active_bitmap should be set atomically
1081e100 - hv: schedule: NEED_RESCHEDULE flag should be set atomically
7d43a93f - HV: validate multiboot cmdline before merge cmdline
45afd777 - tools:acrn-crashlog: detect the panic event from all pstore files
be586b49 - doc:Update Getting started guide for Intel NUC
009a16bd - vhostbridge: update vhostbridge to use vdev_ops
9eba328b - vdev_ops: add general vdev ops
37de8f0b - vbar:msi:msix: export vbar/msi/msix access checking
c2d25aaf - pci_vdev: add pci_vdev_ops to pci_vdev
7a3ea2ad - DM USB: xHCI: fix corner case of short packet logic
32d186ba - DM USB: xHCI: add the resume state for PLS bits
c3d4cc36 - DM USB: xHCI: refine the logic of Stop Endpoint cmd
56868982 - DM USB: xHCI: change log for convenience of debugging
4db7865c - tools: acrn-manager: fix headers install for ioc cbc tools
5b1852e4 - HV: add kata support on sdc scenario
2d4809e3 - hv: fix some potential array overflow risk
e749ced4 - dm: remove unsafe apis in dm log
d8b752c4 - dm: fix variable argument list read without ending with va_end
178c016a - tools: fix variable argument list read without ending with va_end
b96a3555 - dm: fix some possible memory leak
304ae381 - HV: fix “use – or ++ operations”
1884bb05 - HV: modify HV RAM and serial config for apl-nuc
f18dfcf5 - HV: prepare ve820 for apl nuc
2ec16949 - HV: fix sbuf “Casting operation to a pointer”
79d03302 - HV: fix vmptable “Casting operation to a pointer”
9063504b - HV: ve820 fix “Casting operation to a pointer”
1aef5290 - doc: Add platform sos info and GUI screenshots against Celadon Guest OS
714162fb - HV: fix violations touched type conversion
5d6c9c33 - hv: vlapic: clear up where needs atomic operation in vLAPIC
05a4ee80 - hv: cpu: refine secondary cpu start up
5930e96d - hv: io_req: refine vhm_req status setting
1ea3052f - HV: check security mitigation support for SSBD
b592404f - script: set virtio-console BE to stdio for LaaG
d90fee9f - hv: add vuart for VM2 in hybrid scenario
59800214 - DM: Increase hugetlbfs MAX_PATH_LEN from 128 to 256
44fc5fcb - doc: fix typos in rtvm workload design doc
503b71a1 - doc: add guideline for RTVM workload design
93659f01 - doc: Add introduction of launching Celadon User OS
4b6dc025 - HV: fix vmptable misc violations
564a6012 - HV: fix vuart.c “Parameter needs to add const”
e4d1c321 - hv:fix “no prototype for non-static function”
4129b72b - hv: remove unnecessary cancel_event_injection related stuff
ea849177 - hv: fix interrupt lost when do acrn_handle_pending_request twice
9a7043e8 - HV: remove instr_emul.c dead code
254577a6 - makefile: fix parallel build
3164f397 - hv: Mitigation for CPU MDS vulnerabilities.
076a30b5 - hv: refine security capability detection function.
127c98f5 - hv: vioapic: fix interrupt lost and redundant interrupt
e720dda5 - DM: virtio-i2c: add dsdt info
b6f9ed39 - DM: virtio-i2c: add msg process logic
859af9e0 - DM: virtio-i2c: add backend interface
a450add6 - DM: virtio-i2c: add support for virtio i2c adapter
2751f137 - dm: remove Execute attribute of usb_pmapper.c
f3ffce4b - hv: vmexit: ecx should be checked instead of rcx when xsetbv
e8371166 - dm: clean up assert in virtio_rnd.c
842da0ac - dm: cleanup assert in core.c
012ec751 - HV: rename vbdf in struct pci_vdev to bdf
148e7473 - HV: add support for PIO bar emulation
4be09f24 - HV: enable bar emulation for sos
af163d57 - HV: add support for 64-bit bar emulation
09a63560 - hv: vm_manage: minor fix about triple_fault_shutdown_vm
ebf5c5eb - hv: cpu: remove CPU up count
647797ff - hv: ptdev: refine ptdev active flag
cb8bbf7b - dm: clean up the use of errx
82f7720a - dm: vhpet: clean up asserts
aac82750 - dm: vpit: clean up asserts
81f9837e - Revert “dm: add “noapic” to rt-linux kernel parameters”
5a9a7bcd - dm: gvt: clean up assert
bd3f2044 - dm: hyper_dmabuf: clean up assert
56501834 - dm: gc: clean up assert
4a22801d - hv: ept: mask EPT leaf entry bit 52 to bit 63 in gpa2hpa
c64877f5 - tools: add check to verify that running with root privileges
4c3f298e - doc:add more description about application constraints
ae996250 - HV: extract functions from code to improve code reuse and readability
84e09a22 - HV: remove uint64_t base from struct pci_bar
5a8703f7 - HV: need to unmap existing EPT mapping for a vbar base (gpa)
0247c0b9 - Hv: minor cosmetic fix
f0244b24 - HV: call get_vbar_base() to get the newly set vbar base address in 64-bit
ed1bdcbb - HV: add uint64_t bar_base_mapped[PCI_BAR_COUNT] to struct pci_vdev
65ca6ae4 - HV: add get_vbar_base() to get vbar base address in 64-bit
7a2f5244 - HV: store the vbar base address in vbar’s reg member
1b4dbdab - HV: add get_pbar_base() to get pbar base address in 64-bit
8707834f - HV: remove the function get_bar_base()
74b78898 - HV:fix vcpu more than one return entry
198e0171 - HV:fix vcpu violations
dc510030 - version: 1.2-unstable