acrn-hypervisor/hypervisor
Binbin Wu 2fd6e119ca hv: vmcall: hv should not change guest RAX vmcall is undefined
HV passes the return value of vmcall by register RAX unconditionally.
However, if the vmcall is undefined for a guest, RAX value of guest vcpu
should not be changed.

According to SDM Vol. 3C 30-9, VMCALL is allowed from any CPL in guest.
VMCALL is NOT allowed from  CPL > 0 in vmx root mode.
ACRN hypervisor doesn't call VMCALL in vmx root mode, though.

In current code, ACRN also deny VMCALL from CPL > 0 in guest.
So for this case, #GP will not be injected, instead, modify the RAX to
notify the return value.

Tracked-On: #2405
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2019-02-18 11:56:42 +08:00
..
arch/x86 hv: vmcall: hv should not change guest RAX vmcall is undefined 2019-02-18 11:56:42 +08:00
boot hv: Use Interrupt Remapping format for programming interrupt sources 2019-02-01 15:54:55 +08:00
bsp HV: Modularize vtd.c to remove acrn_vm usage 2019-02-06 08:53:46 +08:00
common HV: Modularize vtd.c to remove acrn_vm usage 2019-02-06 08:53:46 +08:00
debug profiling: fix the system freeze issue when running profiling tool 2019-02-01 13:21:15 +08:00
dm HV: Modularize vtd.c to remove acrn_vm usage 2019-02-06 08:53:46 +08:00
hw HV: init ptdev bar during runtime for partition mode 2019-02-02 15:24:43 +08:00
include HV: Remove snoopy_mem from iommu 2019-02-14 10:16:21 +08:00
lib hv: fix identifier reuse violations in sha256.c 2019-01-16 10:24:49 +08:00
release hv: shell & vuart: Change interrupt pin to uint32_t 2019-01-10 23:52:25 +08:00
scripts Makefile: separate PLATFORM into BOARD+FIRMWARE 2018-12-12 13:23:28 +08:00
Kconfig HV: config: add Kconfig and defconfigs for sbl & uefi 2018-06-08 17:21:13 +08:00
MAINTAINERS update home page information 2018-05-15 17:19:39 +08:00
Makefile HV: vm description clean up 2019-02-02 17:41:33 +08:00
README.rst Documentation: clean-up of isolated README.rst files 2018-11-20 11:09:53 -08:00

README.rst

ACRN Hypervisor
###############

The open source `Project ACRN`_ defines a device hypervisor reference stack and
an architecture for running multiple software subsystems, managed securely, on
a consolidated system by means of a virtual machine manager. It also defines a
reference framework implementation for virtual device emulation, called the
“ACRN Device Model”.

The ACRN Hypervisor is a Type 1 reference hypervisor stack, running directly on
the bare-metal hardware, and is suitable for a variety of IoT and embedded
device solutions. The ACRN hypervisor addresses the gap that currently exists
between datacenter hypervisors, and hard partitioning hypervisors. The ACRN
hypervisor architecture partitions the system into different functional
domains, with carefully selected guest OS sharing optimizations for IoT and
embedded devices.

You can find out more about Project ACRN on the `Project ACRN documentation`_
website.

.. _`Project ACRN`: https://projectacrn.org
.. _`ACRN Hypervisor`: https://github.com/projectacrn/acrn-hypervisor
.. _`Project ACRN documentation`: https://projectacrn.github.io/