mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-09 17:07:00 +00:00
When the SOS kernel/pre-launched OS access the 0xCF8/0xCFC, it will cause the vm-exit and then the hypervisor tries to emulate the PCI_cfg access. 0xCF8 write: The bdf/reg is captured. cache_reg = value & (0xFF); 0xCFC-0xCFF read/write: offset = address - 0xCFC. Then cached_reg + offset is used as the offset to access the pci_cfg. If the aligned reg is passed in 0xCF8 register, it can work well. But when the unaligned reg is passed in 0xCF8 register, the cached_reg + offset will cause that the incorrect pci_cfg offset is accessed. For example: The cached_reg = 0x02(Device_ID offset) based on the value passed from 0xCF8 offset = 2 based on 0xCFC-0xCFF address. Then cached_reg + offset is used as the offset(PCI_CMD_REG) In fact the unaligned reg can work well on the real HW. So the cached_reg should be aligned to handle the unaligned reg passed in 0xCF8 reg. Tracked-On: #3249 Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Reviewed-by: Yin Fengwei <fengwei.yin@intel.com> |
||
---|---|---|
.. | ||
acpi_parser | ||
arch/x86 | ||
boot | ||
bsp/ld | ||
common | ||
debug | ||
dm | ||
hw | ||
include | ||
lib | ||
pre_build | ||
release | ||
scenarios | ||
scripts | ||
Kconfig | ||
MAINTAINERS | ||
Makefile | ||
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/