mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-29 04:25:57 +00:00
When the lapic is passthru, vpic and vioapic cannot be used anymore. In current code, user can still inject vpic interrupt to Guest OS, this is not allowed. This patch remove the vpic and vioapic initiate functions during creating VM with lapic passthru. But the APIs in vpic and vioapic are called in many places, for these APIs, follow the below principles: 1. For the APIs which will access uninitiated variables, and may case hypervisor hang, add @pre to make sure user should call them after vpic or vioapic is initiated. 2. For the APIs which only return some static value, do noting with them. 3. For the APIs which user will called to inject interrupt, such as vioapic_set_irqline_lock or vpic_set_irqline, add condition in these APIs to make sure it only inject interrupt when vpic or vioapic is initiated. This change is to make sure the vuart or hypercall need not to care whether lapic is passthru or the vpic and vioapic is initiated or not. Tracked-On: #3227 Signed-off-by: Conghui Chen <conghui.chen@intel.com>
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/