ACRN v0.4 (Dec 2018)¶
We are pleased to announce the release of Project ACRN version 0.4.
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, and documentation. You can either download this source code as a zip or tar.gz file (see the ACRN v0.4 GitHub release page or use Git clone and checkout commands:
git clone https://github.com/projectacrn/acrn-hypervisor
cd acrn-hypervisor
git checkout v0.4
The project’s online technical documentation is also tagged to correspond with a specific release: generated v0.4 documents can be found at https://projectacrn.github.io/0.4/. Documentation for the latest (master) branch is found at https://projectacrn.github.io/latest/.
Version 0.4 New Features¶
1824 - implement “wbinvd” emulation
1859 - Doc: update GSG guide to avoid issue “black screen”
1878 - The “Using Ubuntu as the Service OS” tutorial is outdated and needs to be refreshed
1926 - kernel-doc causing make doc failure (because of upcoming Perl changes)
1927 - Simplify the launch_uos.sh script by pointing at the latest iot-lts2018 kernel by default
Fixed Issues¶
677 - SSD Disk ID is not consistent between SOS/UOS
1777 - After UOS plays video for several minutes, the UOS image will be stagnant
1778 - MSDK: 1080p H264 video decode fails in UOS
1779 - gfxbench cannot run in SOS&UOS
1781 - Can not recognize the SD card in the SOS
1792 - System hang and reboot after run “LaaG Forced GPU Reset: subtest error-state-capture-vebox” in UOS
1794 - After SOS boots up, there’s no output on SOS screen
1795 - SOS fails to get IP address
1825 - Need to clear memory region used by UOS before it exit
1837 - ‘acrnctl list’ shows incomplete VM names
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.
- 1775 - [APL UP2]ACRN debugging tool - acrntrace cannot be used in SOS
There are no acrntrace devices “acrn_trace*” under SOS /dev.
Impact: acrntrace cannot be used in SOS.
Workaround: None. The issue will be fixed in the next release.
- 1776 - [APL UP2]ACRN debugging tool - acrnlog cannot be used in SOS
There are no acrnlog devices “acrn_hvlog*” under SOS /dev.
Impact: acrnlog cannot be used 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 issues 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 issues will be fixed in the next release.
- 1796 - APL NUC fails to reboot sometimes
After APL NUC boots to SOS, the “reboot” command sometimes fails to reboot the SOS.
Impact: Cannot reboot SOS.
Workaround: Power off and boot again. The issues will be fixed in the next release.
- 1986 - UOS will hang once watchdog reset triggered
If Launching UOS with “-s 8,wdt-i6300esb”, UOS will hang if the watchdog reset is triggered.
Impact: UOS cannot self-recover after a watchdog reset is triggered.
Workaround: None.
- 1987 - UOS will have same MAC address after launching UOS with virio-net
After launching UOS with virio-net, UOS on different devices have the same MAC address.
Impact: A UOS network conflict will exist.
Workaround: None. This issues will be fixed in 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.
- 2000 - After launching UOS with Audio pass-through, Device (I2C0) doesn’t exist in UOS DSDT.dsl
After launching UOS with Audio pass-through, Device (I2C0) doesn’t exist in UOS DSDT.dsl
Impact: Cannot use Audio device
Workaround: None.
- 2030 - UP2 fails to boot with uart=disabled for hypervisor
SOS boots up fail following GSG document guide.
Impact: SOS boots up fail on APL UP2
Workaround: A step-by-step workaround has been updated in Github issue.
- 2031 - UP2 serial port has no output with uart=mmio@0x91622000 for hypervisor
After SOS starts, there’s no display on the screen. Though ssh connection is successful, the serial port has no output.
Impact: UP2 serial port has no output
Workaround: A step-by-step workaround has been updated in Github issue.
Change Log¶
These commits have been added to the acrn-hypervisor repo since the v0.3 release in Nov 2018 (click on the CommitID link to see details):
7ee0e2e2 tools: acrnctl: Fix path error when run “acrnctl add” cmd
9761eede hv: cleanup IA32_PAT emulation code r.w.t. to the refactored guest_msrs[]
b6aaf1b8 hv: MSRs may need isolation between normal and secure world
92bbb545 hv: rearrange data structure for emulated MSRs
7fce2462 dm: apply new mevent API to avoid race issue in mei
64d9c59a dm: enhance the mevent API
eec3a342 dm: fix the race issue in mevent_del
87e7bdb9 DM: updating launch_uos.sh
9e0562f4 hv: add obvious comment for empty else clause following else if
d36b44f2 hv: avoid to use
++
or--
operators in an expressionf33edc67 hv: fix reference parameter to procedure is reassigned
36be890e hv: fix included file not protected with #define
ae9d4361 hv: minimize the case of “identifier reuse”
3afc5113 hv: acpi: remove weak parse_madt
c616a422 hv: fix string assigned to non const object
c3799146 hv: remove “i915.enable_initial_modeset”
c3c93202 hv: fix “Array has no bounds specified” in vmsr.c
01cb6ba8 hv: fix one MISRA-C violation in mtrr.c
fe1ace4f doc: fix doc misspellings
fa99dba3 Update doc/getting-started/apl-nuc.rst
f657f401 doc: update gsg to adapt latest release
e24039a7 doc: tweak CSS for doxygen API usability
3ca64c5b dm: add “break” removed by mistake.
908acb50 hv: add ‘no-omit-frame-pointer’ in debug version
9bb16bce hv: fix type conversion without cast with explicit conversion
79463fd5 hv: avoid using of mixed mode arithmetic
9c133c7b hv: lib: refine print_decimal
7a62154e hv: remove the theoretic infinite loop
5d19962d security: remove cflag _FORTIFY_SOURCE in hypervisor
d737d6e6 tools: acrnlog: give user hint when acrn hvlog devices not found
d85a0b70 tools: acrntrace: give user hint when acrn trace devices not found
9ea93ce6 hv: x2APICv support on platforms without support for APICv reg virtualization
9d4b5d7e DM USB: add some preparing time for xHCI emulation before resuming.
b159d66f DM USB: refine the polling thread for libusb events
966c5872 DM USB: xHCI: fix potential NULL pointer issue.
5b39fd0e DM USB: xHCI: fix error logic of allocating xHCI slot
32c4ce9b DM USB: xHCI: refine the xHCI S3 process
9e471d72 DM USB: xHCI: refine the PLC bit emulation logic during S3
29e81501 DM USB: xHCI: refine error handling logic for ctrl transfer
f73cf211 hv: fix ‘Unused procedure parameter’
b261e74d dm: virtio poll mode support for RT
7cc8566d hv: fixes related to unused API and uninitialized variable
f0d3f1c9 HV: Remove some comments for crypto library
d7232ebb hv: trusty: refine struct trusty_mem
5fd6021d doc: hv: add comments to timer APIs for documentation
2dbb0cba doc: fix citation references in modularity doc
e2a8989f doc: add a document on considerations and current status of hypervisor modularization
3b54dd2a doc: add some “sudo” for code
945fdd8a doc: update the directory to “~/”
0ff74b13 doc: delete “install build tool” about
1a959d0f doc: Update note for the directory of UOS image
e2e9a3e9 doc: Add the note for the directory of UOS image
10522423 doc: add note for the directory of UOS image
099c605e doc: Modify to “/boot/efi”
ceed3106 Update using_ubuntu_as_sos.rst
b1db77eb doc: Update the grub part and add code for NVMe
4b2e7f11 Delete AGL about
be70145f Delete AGL about
96a2946d Delete AGL about
6c8c46af delete AGL about
ce89d26e Delete using_AGL_as_uos.rst
3d96e356 Rename using_AGL_as_uos to using_AGL_as_uos.rst
90c27157 Create using AGL as UOS
2bc24f87 Upload the images for “using_AGL_as_uos”
12e66b98 Update using_ubuntu_as_sos.rst
ecff0bf9 Update the layout of packages
50f17832 Update using_ubuntu_as_sos.rst
1afb0f13 Update using_ubuntu_as_sos.rst
06b2ab55 Update using_ubuntu_as_sos.rst
e4941b22 Update using_ubuntu_as_sos.rst
65f21a77 Update the version of Ubuntu to 18.04
abfa1c16 update the length of *
1664ba5f Update using_ubuntu_as_sos.rst
f3527c63 Update using_ubuntu_as_sos.rst
e4b616d5 Update using_ubuntu_as_sos.rst
ab005bc8 Update using_ubuntu_as_sos.rst
2d685a13 Update with Clear Linux 26440
b38629b8 hv: fix ‘Space missing before or after binary operator’
e32b2b4c hv: remove dead code
42e38dfb hv: fix “No prototype for non-static function”
48b3cd92 hv: fix “Expression is not boolean”
11102cfa hv: change the param type of mmio_write**
daaff433 doc: upload the images of UP2’s serial port
592bd513 doc: update the serial port part of UP2
dd43f3ba hv: replace CPU_PAGE_MASK with PAGE_MASK
0f766ca6 hv: replace CPU_PAGE_SHIFT with PAGE_SHIFT
2f15d356 hv: replace CPU_PAGE_SIZE with PAGE_SIZE
e8e25bd6 hv: clean up function definitions in sbuf.h
e7d1cdd9 HV: remove ignored pci device from acrn.conf
e2d09398 DM: remove ignored pci device from SOS bootargs
db4254e2 HV: find and hide serial PCI dev from service OS
8d08ec30 HV: replace serial PCI MMIO base with BDF config
10bde520 hv: other: fix “Procedure has more than one exit point”
fe3de679 hv: debug: fix “Procedure has more than one exit point”
414860fb hv: dev: fix “Procedure has more than one exit point”
ba44417d hv: lib: fix “Procedure has more than one exit point”
279808b2 hv: memory: fix “Procedure has more than one exit point”
ddb54836 hv: cpu: fix “Procedure has more than one exit point”
7f08ad83 use 4 vqs
33362968 change the vq count and vendor id
d495732c hv: remove unused flags related APIs in sbuf
aa9af273 modularization: boot component
b54f2331 modularization: boot component – move functions
51bfafd6 modularization: boot component – move functions
512dbb61 Kconfig: remove PLATFORM configuration option
7eeeccdf Documentation: add more Kconfig options documentation
e1564edd hv: fix type conversion violations
a0582c99 hv: trusty: refine trusty memory region mapping
bd1c0838 hv: trusty: reserve memory for trusty
9bf7dd5d Enable audio virtualization for AaaG
79bf121e hv: throw GP for MSR accesses if they are disabled from guest CPUID
3836d309 hv: code cleanup: vmsr.c
36ba7f8a hv: clear CPUID.07H.EBX[2] to disable SGX from guests
26dc54ce HV: allow disabling serial port via Kconfig
584f6b72 doc: replace return with retval
97eb72a4 doc: always use ‘None’ for functions not returning a value
cbe1b74e HDCP virtio back-end driver
fa012e69 CoreU virtio back-end driver
7003afbe hv: msix: fix bug when check if msix table access
5dcfc133 hv:Rename ptdev to ptirq for some APIs
5b43aa8a hv:Rename ptdev to ptirq for some variables and structures
10afa9bb HV: io: obsolete the valid field in vhm requests
db3c5746 hv: fix ‘Function return value potentially unused’
e0260b44 doc: add sphinx extension improving only directive
0bc85d2e modularization: boot component - move files
667e0444 hv: vpic: fix “Procedure has more than one exit point”
17a6d944 hv: guest: fix “Procedure has more than one exit point”
c32d41a0 hv: irq: fix “Procedure has more than one exit point”
8dfb9bd9 hv: dm: fix “Procedure has more than one exit point”
ab3d7c87 hv: boot: fix “Procedure has more than one exit point”
a1ac585b hv: add brackets to make operator expression more readable
aefe9168 Update ‘launch_uos.sh’ script for UEFI platforms
839680f0 DM: build TPM2 ACPI table when TPM device enabled
aae70db6 DM: Add support for virtual TPM enabling
7df90a25 DM: Support TPM2 CRB device virtualization
4b83e37c DM: tpm emulator to communicate with swtpm
1ba7cebb Update tools/README.rst
419feb1a Documentation: add a README.rst to the tools/ folder
6d6c5b95 [doc] Enhance Using partition mode on UP2 tutorial
d3d474cf Documentation generation: update kernel-doc script to latest
2d2f96af hv: clean up function definitions in profiling.h
14f30a23 hv: clean up function definitions in npk_log.h
07956605 hv: clean up function definitions in trace.h
637326bc hv: clean up function definitions in vuart.h
7b74b2b9 hv: clean up function definitions in console.h
649d0e32 hv: clean up function definitions in dump.h
8920fbac hv: clean up function definitions in logmsg.h
5b6c611a hv: msix: fix “Procedure has more than one exit point”
2f33d1bc tools: acrn-manager: Fix acrnctl mistake displaying suspended to paused
e1d0f7e4 hv: instr_emul: fix decode_modrm no default case in switch statement
042c3935 hv: trusty: fix get_max_svn_index return type inconsistent
c200c984 hv: include: remove name starts with underscore
0100b5a2 HV: replace dynamic memory with static for crypto library
2afa7173 hv: vlapic: fix “Procedure has more than one exit point”
3d1332f3 tools: acrn-crashlog: refine the log storage
06efc58a hv: assign: clean up HV_DEBUG usage related to vuart pin
c380ee9e hv:Revise sanitized page size
a5fd5524 debug: rename struct logmsg to struct acrn_logmsg_ctl
e555f75b debug: Remove early logbuf support
9f13a51e hv: hypercall: VM management fix “Procedure has more than one exit point”
a7398e8a hv: hypercall: general fix “Procedure has more than one exit point”
b627c2c9 hv: switch IA32_TSC_AUX between host/guest through VM Controls
d0b37f8e hv: reloc: define data structure and MACRO when necessary
d043171d IOC mediator: Add VehicalSteeringWheelAngle signal to the whitelist
580579a3 dm: mei: Use compare and swap primitive for refcnt.
b1047224 hv: assign: clean up HV_DEBUG usage related to shell
f21e36f4 hv: vioapic: clean up HV_DEBUG usage
a9312298 hv: irq: clean up HV_DEBUG usage
dfe48811 hv: vcpu: clean up HV_DEBUG usage
e49929a7 hv: ioapic: clean up HV_DEBUG usage
9d529fb9 hv:use copy of guest’s memory block in ‘hcall_set_vm_memory_regions()’
81db2422 hv: enhance Makefile to compile debug/release into 2 libraries
19b35f97 acrn-dm: wait for monitor thread canceling finish
02a89dd4 hv: lapic: fix a theoretic infinite loop when clear lapic isr
dbe3d986 hv: lapic: save lapic base MSR when suspend
b8a553d1 hv: lapic: remove union apic_lvt
538ba08c hv:Add vpin to ptdev entry mapping for vpic/vioapic
297a264a hv:Cleanup ptdev lock
b7bbf812 hv:Replace dynamic memory with static for ptdev
b0e1657b HV: Adding partition mode support for cb2_dnv
664bc1ba HV: Partition mode source code file layout reorg
031191db dm: apl-mrb: launch_uos: remove mei debug flags
378afc50 dm: mei: fix clients scan in sysfs
7bd2976f dm: mei: add zero termination to devpath
87fbb700 dm: mei: fix double fw_reset on uos reboot
844553ef dm: mei: check for state before link reset callback
58ab26ea hv: code cleanup: msr.h
e8296dce hv: Add IO request completion polling feature
e350abe4 HV: handle adding ptdev entry failure cases
fe08a44e hv: doc: use doxygen-generated API docs in HLD for passthru
973c616a doc: passthru: add structure and API docs
4ec4ddc0 Documentation: clean-up of isolated README.rst files
29f95021 hv: vtd: error handling revisit
c4490028 hv: vtd: defer dma remapping enabling until vm creation
42e0e169 hv: vtd: init interrupt config when resume
830b3aa0 hv: vtd: check vtd enabling status with spinlock
a2cb9c2b hv: vtd: add do_action_for_iommus
32ed3d1a hv: vtd: move public API to the bottom part of the file
efb24923 hv: vtd: merge lines for a statement if needed.
e35a8e8c hv: vtd: typo fix
611944c0 dm: Fix race between ioreq client destroy and access
3b24c34c hv: msix: correctly determine when the guest is changing Message Data/Addr
c41c0dab hv: properly initialize MSI-X table
53971e19 hv: fix 2 bugs in msix.c
119eccfe hv: hypercall: clean up HV_DEBUG usage
fc9ec5d8 hv: Derive decryption key from Seed for Trusty to decrypt attestation keybox
7978188c tools: acrn-manager: set MAX_NAME_LEN to 32
5d013ed2 hv: vpci: revert the temporary workaround of handling I/O port CF9
fe9a340e hv: separate the PCI CONFIG_ADDR and CONFIG_DATA I/O port handlers
8b4f3956 hv: PIO emulation handler is attached to I/O port number only
2c581751 vmx: tiny fix for MACRO name and print format
9c025190 hv: hv_main: clean up HV_DEBUG usage
1018a31c HV: For NUC, use 0x3F8/IRQ4 as the vuart port base address/IRQ and use ttyS0 accordingly
e56a6b58 HV: For MRB, use 0x3E8/IRQ6 as the vuart port base address/IRQ.
3b87e7c6 HV: Add vuart port base address/IRQ Kconfig options
b32e689a hypervisor: use “wbinvd” carefully in RT environment
61e6c1f0 hv: reset VM ioreqs in reset_vm
2fa67a44 HV: clear memory region used by UOS before it exit
8fa16211 hv: partition mode also needs free vm id when shutdown vm
9dacc4a5 tools:acrn-crashlog:fix potential issue
6971cc83 hv: fix ‘(void) missing for discarded return value’
a646fcf7 hv: fix ‘No brackets to then/else’ in vpci code
bad813ea hv: fix MISRA-C violations in vpci code: Function pointer is of wrong type
d3f0edfe hv: fix MISRA-C violations in vpci code: 93S, 331S and 612S
f84f1a21 hv: fix MISRA-C violations in vpci code: implicit conversion
d97224a4 hv: fix integer violations
7e6d0a21 HV:pic fix “Recursion in procedure calls found”
0a9d6841 hv: instr_emul: clean up mmio_read/mmio_write
2c7c909e hv: vtd: fix the pre-allocated context table number
3731b4c0 hv: fix ‘(void) missing for discarded return value’
b3b24320 hv: fix possible inconsistent issue for ‘vm->hw.create_vcpus’
7bb09f75 fix “Procedure is not pure assembler”
91fb441d hv:add global lock for VM & vCPU management hypercalls
15567535 hv: unify the function pointer assignment
9a009bce hv:Replace dynamic memory with static for mmio
b5505c43 doc: tweaks to 0.3 release notes
a0345279 DM: update User OS launch script with v0.3 CL and kernel numbers
1847497d Documentation: update GSG for release 0.3
33137dc9 Documentation: adjust “Tracked-On” capitalization in documentation
f0ec5b26 doc: add Makefile option for singlehtml
d62196ac version: 0.4-unstable