acrn-hypervisor/hypervisor
Yifan Liu ffc142d9be hv: sched_event: Change nqueued from int8_t to int32_t
This patch changes the type of nqueued in struct sched_event from int8_t
to int32_t.

In commit d575edf79, the 1 bit flag in struct sched_event has been
changed to int8_t counter to resolve race condition. Signal_event
will decrease the counter and wait_event will increase it and loop if
the counter is greater than 0.

In most cases the uses of signal_event and wait_event are consistent,
except VCPU_EVENT_VIRTUAL_INTERRUPT. In our logic, we signal this event
whenever there is an virtual interrupt, but we wait on it only in
hlt_vmexit_handler, and we reset this event before VMEnter.

In most cases this worked fine. However it has been found that in
certain GPU stress testing scenario, the signaling of this event
happened too frequently to the point where this int8_t counter underflowed
(i.e., hit -128 and then became 127). Then in subsequent
hlt_vmexit_handler, hv waited on this event and stuck there as the
counter was too large.

This patch changes the type from int8_t to int32_t to avoid underflow.

Tracked-On: #7567
Signed-off-by: Yifan Liu <yifan1.liu@intel.com>
2022-05-25 09:37:04 +08:00
..
acpi_parser Remove "All rights reserved" string headers 2022-04-06 13:21:02 +08:00
arch/x86 hv: vtd: reset the one-shot bits for GCMD_REG 2022-05-20 09:30:25 +08:00
boot hv: remove an unnecessary code line 2022-04-20 14:15:25 +08:00
bsp/ld HV: fix MISRA violation of _ld_ram_xxx 2021-11-26 16:45:17 +08:00
common hv: ptdev: address vector scalability problem by interrupt posting 2022-04-19 14:54:04 +08:00
debug hv: debug: fix type size mismatch in get_entry_info 2022-05-24 10:00:43 +08:00
dm hv: fix build warning with gcc-11.2 2022-05-19 14:44:35 +08:00
hw Remove "All rights reserved" string headers 2022-04-06 13:21:02 +08:00
include hv: sched_event: Change nqueued from int8_t to int32_t 2022-05-25 09:37:04 +08:00
lib hv: crypto: fix a minor build Werror 2022-05-13 10:47:51 +08:00
quirks Remove "All rights reserved" string headers 2022-04-06 13:21:02 +08:00
release Remove "All rights reserved" string headers 2022-04-06 13:21:02 +08:00
scripts config-tools: ignore the scenario and board field 2022-04-24 13:53:32 +08:00
MAINTAINERS update home page information 2018-05-15 17:19:39 +08:00
Makefile hv: Fixup serial.conf permissions 2022-05-10 09:20:14 +08:00
README.rst doc: fix utf-8 punctuation, branding, spelling 2019-03-14 09:13:58 -07:00

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/