ACRN v1.6.1 (May 2020)

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

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 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.6.1 GitHub release page) or use Git clone and checkout commands:

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

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

Version 1.6.1 Major Features

What’s New in v1.6.1

  • ACRN ensures libvirt supports VM orchestration based on OpenStack

    • libvirt is an open-source API, daemon, and management tool as a layer to decouple orchestrators and hypervisors. By adding a “ACRN driver”, libvirt can support ACRN. Please refer to ACRN-libvirt.

    • Supports the libvirt-based orchestrator to configure a guest domain’s CPU configuration during VM creation.

    • Supports dynamic configuration for vCPU affinity via acrn-dm

    • ACRN configuration tool updated based on VM orchestration support.

  • Enable CPU sharing and GVT-d Graphics virtualization by default.

  • Supported platforms with multiple IO-APICs

  • Supported VT-d Posted Interrupts

Document Updates

Many new and updated reference documents are available, including:

We recommend that all developers upgrade to ACRN release v1.6.1.

Fixed Issues Details

  • 1773 - [APLNUC][IO][LaaG]USB Mediator USB3.0 and USB2.0 flash disk boot up UOS, quickly hot plug USB and Can not recognize all the devices

  • 3291 - Update documentation and helper scripts to use newer swupd commands.

  • 3697 - Secure timer check failed in trusty which would cause unlock failure after resume from S3

  • 3715 - Add support for multiple RDT resource allocation and fix L3 CAT config overwrite by L2

  • 3758 - Documentation: add a tutorial (or information) on how to change the Linux kernel parameters for User VMs

  • 3770 - Warning when building the ACRN hypervisor SDC (defined at arch/x86/Kconfig:7) set more than once

  • 3773 - [Community][Internal] suspicious logic in vhost.c.

  • 3918 - Change active_hp_work position for code cleaning and add a module parameter to disable hp work.

  • 3939 - [Community][Internal]zero-copy non-functional with vhost.

  • 3946 - [Community][External]Cannot boot VxWorks as UOS on KabyLake.

  • 4017 - hv: rename vuart operations

  • 4072 - [Community-dev][External]hv: add printf “not support the value of vuart index parameter” in function vuart_register_io_handler.

  • 4191 - [Community-dev][External]acrnboot: the end address of _DYNAME region is not calculated correct

  • 4200 - In APCIv advanced mode, a target vCPU (in not-root mode) may get wrong TMR or EOI exit bitmap when another vPCU try to send an interrupt to it if this interrupt trigger mode has changed.

  • 4250 - [Community-dev][external]acrnboot: parse hv cmdline incorrectly when containing any trailing white-spaces

  • 4283 - [Community-dev][External]devicemodel: refactor CMD_OPT_LAPIC_PT case branch

  • 4322 - [ACRN_V1.5][Document] Build cmd error in “Build the ACRN User VM PREEMPT_RT Kernel in Docker” document

  • 4569 - [acrn-configuration-tool]find 64-bit mmio to generate HI_MMIO_START/HI_MMIO_END

  • 4620 - [WHL][Function][WaaG] WaaG will fail to reboot with 2 cores.

  • 4625 - [WHL][ConfigurationTool][WAAG] Need to support passthrough GVT to WaaG by default

  • 4634 - [acrn-configuration-tool]move new_board_config to board_def config and support to parse it

  • 4636 - compile crashlog error with latest clearlinux

  • 4641 - [WHL][acrn-configuration-tool]error “board/scenario xml not match” for created scenario setting

  • 4664 - Wake up vCPU for interrupts from vPIC

  • 4666 - Fix offline tool to generate info in pci_dev file for logical partition scenario

  • 4688 - [WHL][acrn-configuration-tool] RELEASE=n does not take effect while using xml to make hypervisor

  • 4719 - [WHL][Function][LaaG]Garbage display when shutdown LaaG with CPU sharing GVT-D

  • 4752 - [WHL][acrn-configuration-tool] console loglevel is not changed if building hypervisor by xml

  • 4753 - [KBLNUCi7][libvirt][HV] in acrn.efi which enable 4vcpu for laag, with libvirtd.service enabled, SOS kernel panic and reboot

Known Issues

  • 4046 - [WHL][Function][WaaG] Error info popoup when run 3DMARK11 on Waag

  • 4047 - [WHL][Function][WaaG] passthru usb, Windows will hang when reboot it

  • 4313 - [WHL][VxWorks] Failed to ping when VxWorks passthru network

  • 4557 - [WHL][Performance][WaaG] Failed to run 3D directX9 during Passmark9.0 performance test with 7212 gfx driver

  • 4558 - [WHL][Performance][WaaG] WaaG reboot automatically during run 3D directX12 with 7212 gfx driver

Change Log

These commits have been added to the acrn-hypervisor repo since the v1.6 release in Mar 2020 (click the CommitID link to see details):

  • 5632dead - doc: update release_1.6 docs with master docs

  • ac5facd2 - doc: update CPU affinity related descriptions

  • 14366380 - acrn-config: fix log macros for board defconfig

  • 627dd1c8 - acrn-config: add clearlinux UOS for launch config xmls

  • 67728c67 - ACRN/DM: Initialize the igd_lpc bridge to ISA_BRIDGE to make Linux guest happy

  • 71479793 - acrn-config: assign PCPU0~3 to post vm by default

  • c390ab01 - hv: don’t overwrite the statically configured vm_configs[] in hypercall

  • cbaf3e78 - acrn-dm: fix corner cases in acrn_parse_cpu_affinity()

  • d661d444 - acrn-config: refine slot assignment for launch config

  • eb47f8f5 - acrn-config: refinement for CPU affinity check

  • e8d00c2c - local_gpa2hpa: INVALID_GPA also means failure of address conversion

  • 440385d5 - ACRN/DM: Reset the passthrough device to fix garbage display issue

  • 77b7721f - DM USB: xHCI: Drop commands if the slot is disabled

  • 16e33b30 - acrn-config: add vm type sanity check

  • 11959829 - acrn-config: refinement for pci_devs in scenario config xmls

  • fb5c35d1 - acrn-config: parse cpu_affinity from launch config xmls

  • 8cbc6199 - acrn-config: add cpu_affinity for launch config xmls

  • b9865fdf - acrn-dm: change command option name from “pcpu_list” to “cpu_affinity”

  • a6ea34bc - hv: Enable accessed bit in EPT paging

  • c72d1936 - acrn-config: update cpu_affinity in scenrio configuration xml files

  • cce7389d - acrn-config: change names for vcpu_affinity[] related items

  • 45cc2c5e - acrn-dm: implement cpu_affinity command line argument

  • 0805eb9a - hv: dynamically configure CPU affinity through hypercall

  • 46753944 - hv: replace vcpu_affinity array with cpu_affinity_bitmap

  • 40ae32f1 - hv: provide vm_config information in get_platform_info hypercall

  • 42c43993 - hv: some coding refinement in hypercall.c

  • c9fa9c73 - hv: move error message logging into gpa copy APIs

  • b9a7cf3b - acrn-config: assign VM IDs for dynamic scenario and launch setting

  • bcfbc13f - acrn-config: add attributes for scenario and launch setting

  • 3799b95b - acrn-config: add max VM count check when generating scenario XML file

  • 1d4b7ab8 - acrn-config: refine template xmls

  • ea0c62da - acrn-config: add 2 UUIDs for post-launched Standard VM

  • 093b1c48 - acrn-config: add SOS_IDLE for SOS cmdline

  • 88bed66e - HV: refine usage of idle=halt in sos cmdline

  • 510a0931 - Makefile: do not override RELEASE when build with XML

  • 7410f9d0 - hv: vtd: fix potential dead loop if qi request timeout

  • bf917ae2 - acrn-config: Generate info in pci_dev file for Pre-Launched VMs

  • b99de16f - hv: Wake up vCPU for interrupts from vPIC

  • 75b59165 - acrn-config: remove sdc2 config xmls

  • 08bcf4be - acrn-config: refine the HV_RAM_SIZE/HV_RAM_START for board_defconfig

  • d7299604 - acrn-config: set HV_RAM_SIZE/HV_RAM_START to blank from config xmls

  • 5e53ac03 - acrn-config: refine template xmls

  • 718e7567 - acrn-config: modify epc_section to configurable=”0”

  • 49b3939e - acrn-config: fix syntax for new logical partition xmls

  • fc3b4ed6 - acrn-config: refine GPU vpid format for launch script

  • d17076b4 - HV: remove sdc2 scenario support

  • 7f1c4422 - HV: support up to 7 post launched VMs for industry scenario

  • 9a23bedd - crashlog: fix build issue under latest clearlinux

  • d742be2c - HV: Kconfig: enable CPU sharing by default

  • 4c7ffeea - acrn-config: add template xmls for dynamic config

  • 0445c5f8 - acrn-config: dynamic configuration for scenario setting and launch setting

  • a12b746a - acrn-config: remove hard code UUID from config xmls

  • 86e467f6 - acrn-config: Use vm_type to instead load_type/uuid/severity in config

  • 85630258 - acrn-config: support to parse pci_devs for pre launched vm

  • e0c75652 - acrn-config: add pass-thru PCI device for pre launched vm xmls

  • 19032398 - acrn-config: remove ‘scenario’ dependency from acrn config tool

  • cc5c6421 - Makefile: disable KCONFIG_FILE when build from xml

  • 7d173917 - Kconfig: remove MAX_KATA_VM_NUM

  • 4388099c - Kconfig: change scenario variable type to string

  • 28bffa77 - HV: merge sos_pci_dev config to sos macro

  • d9c302ba - HV: init vm uuid and severity in macro

  • b08dbd41 - HV: fix wrong gpa start of hpa2 in ve820.c

  • 60178a9a - hv: maintain a per-pCPU array of vCPUs and handle posted interrupt IRQs

  • a07c3da3 - hv: define posted interrupt IRQs/vectors

  • f5f307e9 - hv: enable VT-d PI for ptdev if intr_src->pid_addr is non-zero

  • c9dd310e - hv: check if the IRQ is intended for a single destination vCPU

  • 198b2576 - hv: add function to check if using posted interrupt is possible for vm

  • 1bc76991 - hv: extend union dmar_ir_entry to support VT-d posted interrupts

  • 8be6c878 - hv: pass pointer to functions

  • cc5bc34a - hv: extend struct pi_desc to support VT-d posted interrupts

  • b7a126cd - hv: move pi_desc related code from vlapic.h/vlapic.c to vmx.h/vmx.c/vcpu.h

  • 8e2efd6e - hv: rename vlapic_pir_desc to pi_desc

  • 233577e4 - acrn-config: enable hv config for scenarion setting UI

  • c5cd7cae - acrn-config: add hv configurations to scenario config xmls

  • 4a98f533 - acrn-config: add support to parse board defconfig from configurations

  • d0beb7e9 - acrn-config: support passthroug GVT for WaaG by default

  • 1bf3163d - hv: Hypervisor access to PCI devices with 64-bit MMIO BARs

  • 910d93ba - hv: Add HI_MMIO_START and HI_MMIO_END macros to board files

  • 5e8fd758 - acrn-config: round HI_MMIO_START/HI_MMIO_END to the closest 1G

  • b9229348 - hv: fix for waag 2 core reboot issue

  • 45b65b34 - hv: add lock for ept add/modify/del

  • bbdf0199 - hv: vpci: refine comment for pci_vdev_update_vbar_base

  • dad7fd80 - hv: Fix issues with the patch to reserve EPT 4K pages after boot

  • 4bdcd33f - hv: Reserve space for VMs’ EPT 4k pages after boot

  • 963b8cb9 - hv: Server platforms can have more than 8 IO-APICs

  • 4626c915 - hv: vioapic init for SOS VM on platforms with multiple IO-APICs

  • f3cf9365 - hv: Handle holes in GSI i.e. Global System Interrupt for multiple IO-APICs

  • ec869214 - hv: Introduce Global System Interrupt (GSI) into INTx Remapping

  • b0997e76 - hv: Pass address of vioapic struct to register_mmio_emulation_handler

  • 9e21c5bd - hv: Move error checking for hypercall parameters out of assign module

  • 37eb369f - hv: Use ptirq_lookup_entry_by_sid to lookup virtual source id in IOAPIC irq entries

  • 0c9628f6 - acrn-config: remove the same parameters and functions from launch_cfg_lib

  • 7d827c4d - acrn-config: remove the same parameters and functions from scenario_cfg_lib

  • 8e3ede1a - acrn-config: remove the same parameters and functions from board_cfg_lib

  • df4a395c - acrn-config: expends parameters and functions to common lib

  • 6bbc5711 - acrn-config: Fixes for BAR remapping logic

  • 889c0fa4 - acrn-config: update IOMEM_INFO of tgl-rvp board

  • bce6a3c4 - Makefile: support make with external configurations

  • 3774244d - Makefile: parameters check for board and scenario

  • 82e93b77 - Makefile: make hypervisor from specified Kconfig

  • f8abeb09 - hv: config: enable RDT for apl-up2 by default

  • 14e7f7a8 - acrn-config: enable CAT for industry scenario on APL-UP2 by default

  • 02fea0f2 - acrn-config: support generation of per vcpu clos configuraton

  • 76943866 - HV: CAT: support cache allocation for each vcpu

  • d18fd5f8 - acrn-config: find 64-bit mmio for HI_MMIO_START/HI_MMIO_END

  • d9d50461 - acrn-config: update IOMEM_INFO of native board config xml

  • e7726944 - acrn-config: dump iomem info from /proc/iomem

  • 8e7b80fc - acrn-config: Limit check on Pre-Launched VM RAM size

  • aa6bb9e2 - acrn-config: support ‘–out’ option for board/scenario/launch config

  • 05e3ea5f - acrn-config: correct passthru ‘audio’ device for nuc6cayh

  • c980b360 - acrn-config: minor fix for generating CONFIG_PCI_BDF

  • 6f8a7ba5 - acrn-config: add some configs in board defconfig

  • 2eb8e0f7 - acrn-config: remove git check and avoid to generate patch for config files

  • 48fdeb25 - acrn-config: one button to generate config file

  • ab879407 - acrn-config: create temporary scenario file folder if it doesn’t exist