ACRN v1.5 (Jan 2020)

We are pleased to announce the release of ACRN version 1.5.

ACRN is a flexible, lightweight reference hypervisor that is built with real-time and safety-criticality in mind. It is 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.5 GitHub release page) or use Git clone and checkout commands:

git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v1.5

The project’s online technical documentation is also tagged to correspond with a specific release: generated v1.5 documents can be found at https://projectacrn.github.io/1.5/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/. ACRN v1.5 requires Clear Linux* OS version 32030.

Version 1.5 Major Features

What’s New in v1.5

  • Basic CPU sharing: Fairness Round-Robin CPU Scheduling has been added to support basic CPU sharing (the Service VM and WaaG share one CPU core).

  • 8th Gen Intel® Core™ Processors (code name Whiskey Lake) are now supported and validated.

  • Overall stability and performance has been improved.

  • An offline configuration tool has been created to help developers port ACRN to different hardware boards.

Document Updates

Many new reference documents are available, including:

Fixed Issues Details

  • 3630 - Clean up the code on drm/i915/gvt.

  • 3723 - CODEOWNERS folder names are incorrect.

  • 3777 - Tutorial “Using partition mode on UP2” no longer valid.

  • 3779 - Modify the Make file.

  • 3795 - fix a bug that tpr threshold is not updated

  • 3830 - [KBLNUC][WaaG] bring back non-context register save/restore

  • 3903 - Local variable ‘info’ maybe referenced before initializing in ‘vmsi_remap()’

  • 3904 - remove registration of default port IO and MMIO handlers

  • 3930 - [APL][acrn-configuration-tool][AaaG]Generate unnecessary runc_container code for apl-mrb/apl-up2 with Scenario:SDC + Launch Setting:sdc_launch_1uos_aaag

  • 3931 - [APL][acrn-configuration-tool][LaaG]Generated Launch script is incorrect, UOS’s rootfs_img should be clearlinux.img|android.img for apl-mrb/apl-up2 with Scenario:SDC

  • 3953 - Modify efi of default build.

  • 3955 - [KBL][acrn-configuration-tool]’virtio-blk’ was generated in launch script of Preempt-RT, should remove it

  • 3956 - [KBL][acrn-configuration-tool]’keep_gsi’ should set along with android vm

  • 3960 - [Community][External]UP2 Setup - “ACRN HVLog: not running under acrn hypervisor!”

  • 3968 - Modify efi of default build.

  • 3972 - doc: no need to copy OVMF.fd to local folder while preparing the User VMs

  • 3979 - [KBLNUC][WaaG][GVT]The boot uos script will display the sos information on the uos screen for about 2s.

  • 3980 - [Community][External]invalid ovmf param ./OVMF.fd BOARD=nuc7i7dnb.

  • 3984 - [Community][External]Fedora 30 as User OS.

  • 3987 - No bounds specified for array platform_clos_array .

  • 3993 - trampoline code in hypervisor potentially be accessible to service VM

  • 4005 - [WHL][Function][WaaG]Fail to create WaaG image using ISO only on WHL

  • 4007 - V1.3 E2E release binary failed to boot up on KBL NUC with 32G memory.

  • 4010 - [Community][External]Booting in blind mode

  • 4012 - Error formatting flag for hypcall_id

  • 4020 - Refine print string format for ‘uint64_t’ type value in hypervisor

  • 4043 - [WHL][Function][WaaG]windows guest can not get normal IP after passthru Ethernet

  • 4045 - [WHL][Function][WaaG]Adding USB mediator in launch script, it takes a long time to start windows, about 13 minutes.

  • 4049 - [SIT][ISD] [AUTO] only 2 can work in”-s n,passthru,02/00/0 ", other numbers rtvm can not launch

  • 4061 - Some scripts are missing license and copyright header

  • 4066 - [UP2][KBL]][acrn-configuration-tool] head file was not included in board.c

  • 4073 - [APL-MRB][acrn-configuration-tool] alloc vuar1 irq when pttyS1 not exist only

  • 4074 - [KBL][acrn-configuration-tool]: Cx desc parsing enhancement

  • 4082 - [acrn-configuration-tool]bypass acpi_idle/acpi_cpufreq driver

  • 4094 - Error parameter for intel_pstate in launch_hard_rt_vm.sh

  • 4099 -[Community][External]Boot issue on non Apollo/Kaby lake.

  • 4116 - [Community][External]How to set CPU Core UOS

  • 4123 - [Community][External]Creating Ubuntu SOS not working - black screen

  • 4125 - [Community][External]vm1 is running, can’t create twice!

  • 4128 - [WHL][acrn-configuration-tool]WebUI can not select vuart 0&vuart 1 by default

  • 4135 - [Community][External]Invalid guest vCPUs (0) Ubuntu as SOS.

  • 4139 - [Community][External]mngr_client_new: Failed to accept from fd 38

  • 4143 - [acrn-configuration-tool] bus of DRHD scope devices is parsed incorrectly

  • 4163 - [acrn-configuration-tool] not support: -s n,virtio-input

  • 4164 - [acrn-configuration-tool] not support: -s n,xhci,1-1:1-2:2-1:2-2

  • 4165 -[WHL][acrn-configuration-tool]Configure epc_section is incorrect

  • 4172 - [acrn-configuration-tool] not support: -s n,virtio-blk, (/root/part.img—dd if=/dev/zero of=/root/part.img bs=1M count=10 all/part of img, one u-disk device, u-disk as rootfs and the n is special)

  • 4173 - [acrn-configuration-tool]acrn-config tool not support parse default pci mmcfg base

  • 4175 - acrntrace fixes and improvement

  • 4185 - [acrn-configuration-tool] not support: -s n,virtio-net, (not set,error net, set 1 net, set multi-net, vhost net)

  • 4211 - [kbl nuc] acrn failed to boot when generate hypervisor config source from config app with HT enabled in BIOS

  • 4212 - [KBL][acrn-configuration-tool][WaaG+RTVM]Need support pm_channel&pm_by_vuart setting for Board:nuc7i7dnb+WaaG&RTVM

  • 4227 - [ISD][Stability][WaaG][Regression] “Passmark8.0-Graphics3D-DirectX9Complex” test failed on WaaG due to driver error

  • 4228 - [acrn-configuration-tool] cannot boot hypervisor on customer board with KBL 7300U

  • 4229 - Add range check in Kconfig.

  • 4230 - Remove MAX_VCPUS_PER_VM in Kconfig

  • 4232 - Set default KATA_VM_NUM to 1 for SDC

  • 4247 - [acrn-configuration-tool] Generate Scenario for VM0 communities with VM1 is incorrect.

  • 4249 - [acrn-configuration-tool]Generated Launchscript but WebUI prompt error msg after we just select passthru-devices:audio_codec

  • 4255 - [acrn-configuration-tool][nuc7i7dnb][sdc]uos has no ip address

  • 4260 - [Community][External]webcam switch between 2 UOS.

  • 4286 - [acrn-configuration-tool] Remove VM1.vcpu_affinity.pcuid=3 for VM1 in sdc scenario

Known Issues

  • 4047 - passthru usb, when WaaG boot at “windows boot manager” menu, the usb keyboard does not work

  • 4316 - [KataContainers]LaaG miss ip address when we create kata_container first with macvtap driver

  • 4317 - [WHL][Function][WaaG]Mediator usb earphone, play audio will incontinuous and not clearly

Change Log

These commits have been added to the acrn-hypervisor repo since the v1.4 release in Nov 2019 (click on the CommitID link to view details):

  • ee74737f - HV: search rsdp from e820 acpi reclaim region

  • 578a7ab4 - acrn-config: remove pcpu3 from vm1 in SDC scenario

  • 7d27c4bc - hv: vpci: restore PCI BARs when doing AF FLR

  • bb06f6f9 - hv: vpci: restore PCI BARs when doing PCIe FLR

  • 92ed8601 - hv: hotfix for xsave

  • 067d8536 - OVMF release v1.5

  • 9b71c5cd - acrn-config: add ‘logger_setting’ into launch script

  • be6c6851 - acrn-config: refine mount device for virtio-blk

  • 686d7763 - HV: Remove INIT signal notification related code

  • d7eb14c5 - HV: Use NMI to replace INIT signal for lapic-pt VMs S5

  • 29b7aff5 - HV: Use NMI-window exiting to address req missing issue

  • d26d8bec - HV: Don’t make NMI injection req when notifying vCPU

  • 24c2c0ec - HV: Use NMI to kick lapic-pt vCPU’s thread

  • 23422713 - acrn-config: add tap_ prefix for virtio-net

  • 6383394b - acrn-config: enable log_setting in all vm

  • 0b44d64d - acrn-config: check pass-through device for audio/audio_codec

  • 75ca1694 - acrn-config: correct vuart1 setting in scenario config

  • d52b45c1 - hv:fix crash issue when handling HC_NOTIFY_REQUEST_FINISH

  • 78139b95 - HV: kconfig: add range check for memory setting

  • 24994703 - HV: Kconfig: set default Kata num to 1 in SDC

  • 9d5e72e9 - hv: add lock for ept add/modify/del

  • 98b3dd94 - acrn-config: set HV_RAM_START above 256M for new board

  • 46463900 - acrn-config: add ‘ramdisk_mod’ item tag for tgl-rvp

  • 13d6b69d - acrn-config: set DRHDx_IGNORE while no DEV_SCOPE in DRHD

  • 12a9bc29 - acrn-config: add CONFIG_SERIAL_x for new board

  • d699347e - acrn-config: change gvt_args from selectbox to editbox

  • 05682b2b - hv:bugfix in write protect page hypercall

  • 1636ac04 - acrn-config: Add non-contiguous HPA to currently supported hardware.

  • 2777f230 - HV: Add helper function send_single_nmi

  • 525d4d3c - HV: Install a NMI handler in acrn IDT

  • fb346a6c - HV: refine excp/external_interrupt_save_frame and excp_rsvd

  • 7f964654 - hv:remove need_cleanup flag in create_vm

  • 67ec1b77 - HV: expose port 0x64 read for SOS VM

  • a44c1c90 - HV: Kconfig: remove MAX_VCPUS_PER_VM in Kconfig

  • 0ba84348 - acrn-config: rename CONFIG_MAX_PCPU_NUM to MAX_PCPU_NUM

  • ea3476d2 - HV: rename CONFIG_MAX_PCPU_NUM to MAX_PCPU_NUM

  • 67b416d5 - acrn-config: hide non-legacy serial port as SOS console

  • deb5ed1f - acrn-config: unify get_vuart_info_id api in config tool

  • 212d030b - acrn-config: add ‘poweroff_channel’ support for launch config

  • 7446d41f - acrn-config: modify ‘poweroff_channel’ info in launch xmls

  • 0f19f878 - acrn-config: add ‘virtio-console’ info in launch xmls

  • bad3c53c - acrn-config: add ‘virtio-console’ mediator support for launch config

  • b6bffd01 - hv:remove 2 unused variables in vm_arch structure

  • 422a051c - Makefile: Build Release version by default

  • e95b316d - hv: vtd: fix improper use of DMAR_GCMD_REG

  • 68ea2cc6 - acrn-config: Fix ve820 table generation when guest memory size is >512MB

  • f2bf3d3e - dm:gvt:update bus0 memlimit32 value

  • acb5affd - doc:update acrn-shell.rst

  • 413f098b - Doc: Add libnuma dependency for acrntrace

  • a90f4a0a - Makefile: print config summary at the end

  • 9729fe07 - acrn-config: support non-contiguous HPA for hybrid scenario

  • c8a4ca6c - HV: Extend non-contiguous HPA for hybrid scenario

  • b32ae229 - hv: sched: use hypervisor configuration to choose scheduler

  • 6a144e6e - hv: sched: add yield support

  • 6554437c - hv: sched_iorr: add some interfaces implementation of sched_iorr

  • b39630a8 - hv: sched_iorr: add tick handler and runqueue operations

  • f44aa4e4 - hv: sched_iorr: add init functions of sched_iorr

  • ed400863 - hv: sched_iorr: Add IO sensitive Round-robin scheduler

  • 3c8d465a - acrnboot: correct the calculation of the end boundary of _DYNAMIC region

  • 0bf03b41 - acrntrace: Set FLAG_CLEAR_BUF by default

  • 9e9e1f61 - acrntrace: Add opt to specify the cpus where we should capture the data

  • 366f4be4 - acrntrace: Use correct format for total run time

  • 1e192f05 - acrntrace: break when finding the matching key

  • 9655b9de - acrntrace: Fix the incorrect total vmexit cnt issue

  • 1115c0c6 - acrn-config: UI supports to edit multiple virtio input devices.

  • 557e7f19 - Makefile: add gcc flags to prevent some optimization

  • c2c05a29 - hv: vlapic: kick targeted vCPU off if interrupt trigger mode has changed

  • ed65ae61 - HV: Kconfig changes to support server platform.

  • 706dbc0e - acrn-config: support non-contiguous HPA for pre-launched VM

  • 6e8b4136 - HV: Add support to assign non-contiguous HPA regions for pre-launched VM

  • 9b44e57d - acrn-config: Fix target xml generation issue when no P-state scaling driver is present

  • 03a1b2a7 - hypervisor: handle reboot from non-privileged pre-launched guests

  • 26801210 - Makefile: fix make failure for logical_partition or hybrid scenario

  • 65a55320 - acrn-config: add xml to support TGL RVP board

  • 1fe1afd4 - acrn-config: Add ramdisk tag parsing support

  • 2b9fa856 - acrn-config: Add ramdisk tag to supported board/scenario xmls

  • da3ba68c - hv: remove corner case in ptirq_prepare_msix_remap

  • c05d9f80 - hv: vmsix: refine vmsix remap

  • 5f5ba1d6 - hv: vmsi: refine write_vmsi_cfg implementation

  • 2f642002 - dm:gvt:enable gvt bar registration

  • 89908bf5 - dm:gvt:update gvt bars before other pci devices write bar address

  • f27d4754 - dm:gvt:adjust pci bar region with reserved bar regions

  • 1ac0b57c - dm:gvt:reserve gvt bar regions in ACRN-DM

  • 72644ac2 - hv: do not sleep a non-RUNNING vcpu

  • d624eb5e - hv: io: do schedule in IO completion polling loop

  • d48da2af - hv: bugfix for debug commands with smp_call

  • 47139bd7 - hv: print current sched_object in acrn logmsg

  • 5eb80402 - acrn-config: update UI to support virtio devices

  • 5309e415 - acrn-config: modify the description of usb xhci

  • 7838b537 - acrn-config: add virtio-net mediator support for launch config

  • 25b2a26e - acrn-config: add ‘virtio-network’ info in launch xmls

  • 8464419a - acrn-config: add virtio-block support for launch config

  • 40140281 - acrn-config: add rootfs_dev/rootfs_img with virtio-blk item

  • aedd2c70 - acrntrace: parse leaf and subleaf of cpuid

  • aae974b4 - HV: trace leaf and subleaf of cpuid

  • 77039f29 - acrn-config: Extend ve820 generation script for sizes gt 512 MB

  • 450d2cf2 - hv: trap RDPMC instruction execution from any guest

  • 3d412266 - hv: ept: build 4KB page mapping in EPT for RTVM for MCE on PSC

  • 0570993b - hv: config: add an option to disable mce on psc workaround

  • 192859ee - hv: ept: apply MCE on page size change mitigation conditionally

  • 3cb32bb6 - hv: make init_vmcs as a event of VCPU

  • 15da33d8 - HV: parse default pci mmcfg base

  • 80a7281f - acrn-config: add MMCFG_BASE_INFO item in board config

  • 0e273e99 - acrn-config: get default pci mmcfg base address

  • 0d998d6a - hv: sync physical and virtual TSC_DEADLINE when msr interception enabled/disabled

  • 97916364 - hv: fix virtual TSC_DEADLINE msr read/write issues

  • e6141298 - hv: support xsave in context switch

  • 8ba203a1 - hv: change xsave init function name

  • 12a3ec8a - acrn-config: remove redundant get_leaf_tag_map in launch config lib

  • 2c2ccfc5 - acrn-config: support OVMF vbootloader only

  • 38a647c8 - acrn-config: correct epc_section base/size value

  • 91330eaa - acrn-config: add usb xhci mediator support for

  • 420b65a6 - acrn-config: add ‘usb_xhci’ info to launch xmls

  • bc9b6d1b - acrn-config: add virtio-input support for launch

  • 9fc32043 - acrn-config: add ‘virtio-input’ info in launch xmls

  • 71c51a8f - acrn-config: refinement for library config

  • 1e233364 - acrn-config: skip the DRHDn_IGNORE when no device scope

  • 40929efe - acrn-config: walk secondary PCI Bus for target board

  • 5e923420 - acrn-config: refinement for DmarDevScope struct

  • f6e6ec4c - acrn-config: modify SDC config xml to support kata vm config in webUI

  • bb2218ef - acrn-config: add UI to add or remove Kata VM for sdc scenario

  • 31d023e8 - acrn-config: launch refinement on vcpu affinity and uos image

  • d581473c - acrn-config: refine vcpu affinity/number for SDC scenario

  • d44440f7 - acrn-config: print warning if MMIO BAR size above 4G

  • dc2d6b66 - acrn-config: modify the git commit message for gen_patch

  • 2c4ebdc6 - hv: vmsi: name vmsi with verb-object style

  • 6ee076f7 - hv: assign: rename ptirq_msix_remap to ptirq_prepare_msix_remap

  • 51a43dab - hv: add Kconfig parameter to define the Service VM EFI bootloader

  • 058b03c3 - dm: fix memory free issue for xhci

  • 422330d4 - HV: reimplement PCI device discovery

  • 94a456ae - HV: refactor device_to_dmaru

  • 34c75a0b - doc: Add multiple PCI segments as known limitation for hypervisor

  • c5a87d41 - HV: Cleanup PCI segment usage from VT-d interfaces

  • 810169ad - HV: initialize IOMMU before PCI device discovery

  • ea131eea - HV: add DRHD index to pci_pdev

  • 0b7bcd64 - HV: extra methods for extracting header fields

  • 9af4a624 - doc: edit using_ubuntu_as_sos.rst adjust to v1.4

  • 32b8d99f - hv:panic if there is no memory map in multiboot info

  • bd0dbd27 - hv:add dump_guest_mem

  • 215bb6ca - hv:refine dump_host_mem

  • 4c8dde1b - hv:remove show_guest_call_trace

  • 24fa14bc - Revert “Revert “OVMF release v1.4””

  • 5b4d676b - version: 1.5-unstable