acrn-hypervisor/hypervisor
Qian Wang 5d8f5023d0 HV: inject physical PCIEXBAR to SOS vhostbridge
hv: vpci: inject physical PCIEXBAR to SOS vhostbridge in
order to fully emulate a full host bridge following HW spec

The vhostbridge we emulate currently is a "Celeron N3350/
Pentium N4200/Atom E3900 Series Host Bridge", which is of
Appollo Lake SoC, but the emulation is incomplete, and
we need to implement a full vhostbridge following HW spec.

This is a step-by-step process, and in this patch we fixes
the simulation of PCIEXBAR register (0x60) and thus solved
bug #6464.

-------#6464: SOS cannot make use of ECAM---------------
Generally, SOS will check the MMIO Base Addr in ACPI MCFG
table to confirm it is a reserved memory area. There will
be 3 methods to check:
1. Via E820 table
2. Via EFI runtime service
3. To check with the value in PCIEXBAR(0x60) of hostbridge

For SOS, method 2 is not feasible since no EFI runtime service
is available for SOS. And on newer platform like EHL/TGL, its
BIOS somehow doesn't reserve it in native E820, thus SOS will
try use method 3 to verify, so we should inject physical ECAM
to vhostbridge, otherwise all 3 methods will fail, and SOS will
not make use of ECAM, which will results in that SOS cannot use
PCIe Extended Capabilities like SR-IOV.
-------------------------------------------------------

TODO:
1. In the future, we may add one or more virtual hostbridges for CPUs that are incompatible in layout with the current one, according to HW specs
2. Besides PCIEXBAR(0x60), there are also some registers needs to be emulated more precisely rather than be treated as read-only and hard-coded, will be fixed in future patches.

Tracked-On: #5056
Signed-off-by: Qian Wang <qian1.wang@intel.com>
Reviewed-by: Jason Chen <jason.cj.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2020-07-23 20:20:13 +08:00
..
acpi_parser hv: Change to a permissive check with broken DMAR table 2020-06-30 13:59:38 +08:00
arch/x86 hv: Disable XSAVE-managed CET state of guest VM 2020-07-23 20:15:57 +08:00
boot hv: vapci: add tpm2 support for pre-launched vm 2020-07-23 20:13:20 +08:00
bsp/ld HV: add a specific stack space used in CPU booting 2020-04-29 13:56:40 +08:00
common hv: vmcall: check vm id in dispatch_sos_hypercall 2020-07-23 20:13:20 +08:00
debug hv:use spinlock_irqsave_obtain api for uart 2020-07-03 17:41:17 +08:00
dm HV: inject physical PCIEXBAR to SOS vhostbridge 2020-07-23 20:20:13 +08:00
hw HV: vdev passthough hidding SRIOV 2020-07-16 17:27:18 +08:00
include hv: Disable XSAVE-managed CET state of guest VM 2020-07-23 20:15:57 +08:00
lib HV: replace merge_cmdline api with strncat_s 2020-06-08 13:30:04 +08:00
pre_build hv: vtd: add two paramters for dmar_assign_irte 2020-06-16 08:52:56 +08:00
release HV: makefile: to avoid duplicated build libs 2020-05-21 15:12:21 +08:00
scenarios hv: vapci: add tpm2 support for pre-launched vm 2020-07-23 20:13:20 +08:00
scripts Makefile: minor fix on hypervisor dependency 2020-06-04 15:03:43 +08:00
Kconfig
MAINTAINERS
Makefile hv: mmio_dev: add hypercall to support mmio device pass through 2020-07-23 20:13:20 +08:00
README.rst doc: fix utf-8 punctuation, branding, spelling 2019-03-14 09:13:58 -07: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/