mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-03-18 11:04:12 +00:00
Commitd575edf79achanges the internal implementation of wait_event and signal_event to use a counter instead of a boolean value. The background was: ACRN utilizes vcpu_make_request and signal_event pair to shoot down other vcpus and let them wait for signals. vcpu_make_request eventually leads to target vcpu calling wait_event. However vcpu_make_request/signal_event pair was not thread-safe, and concurrent calls of this pair of API could lead to problems. One such example is the concurrent wbinvd emulation, where vcpus may concurrently issue vcpu_make_request/signal_event to synchronize wbinvd emulation.d575edfcommit uses a counter in internal implementation of wait_event/signal_event to avoid data races. However by using a counter, the wait/signal pair now carries semantics of semaphores instead of events. Semaphores require caller to carefully plan their calls instead of multiply signaling any number of times to the same event, which deviates from the original "event" semantics. This patch changes the API implementation back to boolean-based, and re-resolve the issue of concurrent wbinvd in next patch. This also partially reverts commit10963b04d1, which was introduced because of thed575edf. Tracked-On: #7887 Signed-off-by: Yifan Liu <yifan1.liu@intel.com> Acked-by: Eddie Dong <eddie.dong@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/