acrn-hypervisor/devicemodel
Junjie Mao 55105dbdeb DM: notify VHM request complete after pausing the VM
It is necessary to notify the VHM and hypervisor on the completion of a VHM
request even when the UOS is in suspend or system reset mode because the VHM and
hypervisor rely on the notification to reset their own states on the
request.

Currently the VHM request state is checked against REQ_STATE_PROCESSING instead
of REQ_STATE_COMPLETE when handling system reset or suspend/resume, leading to a
completed request unnotified, and causing the HV to complain on an occupied VHM
request when it raises a new one.

This patch fixes this issue by properly notifying completed requests to the VHM
& hypervisor. Some concerns are raised during a discussion on the potential
races which does not hurt for now but may in the future. These considerations
and potential solutions are documented as comments for future reference.

Tracked-On: #895
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
2018-08-09 12:52:14 +08:00
..
arch/x86 DM: Add funciton to update PM_WAK_STS 2018-08-02 13:14:03 +08:00
bios dm: bios: update vSBL binary to v0.8 2018-07-31 12:49:19 +08:00
core DM: notify VHM request complete after pausing the VM 2018-08-09 12:52:14 +08:00
hw DM USB: xHCI: Refine drd code to fix a potential NULL pointer issue. 2018-08-07 10:12:23 +08:00
include DM: adapt to the new VHM request state transitions 2018-08-08 15:53:07 +08:00
samples DM: check more in guest service & launch script 2018-08-08 16:00:56 +08:00
MAINTAINERS update home page information 2018-05-15 17:19:39 +08:00
Makefile DM: add tag info while no repo in release 2018-08-09 09:47:08 +08:00
README.rst DM USB: involve the libusb 2018-05-29 10:35:05 +08:00

README.rst

ACRN Device Model
#################

Introduction
============
The ACRN Device Model provides **device sharing** capabilities between the Service OS and Guest OSs. It is a component that is used in conjunction with the `ACRN Hypervisor`_ and this is installed within the Service OS. You can find out more about Project ACRN on the `Project ACRN documentation`_ website.


Building the Device Model
=========================

Build dependencies
******************

* For Clear Linux

.. code-block:: console

   sudo swupd bundle-add os-clr-on-clr \
          os-utils-gui-dev

* For CentOS

.. code-block:: console

   sudo yum install gcc \
          libuuid-devel \
          openssl-devel \
          libpciaccess-devel \
          libusb-devel

* For Fedora 27

.. code-block:: console

   sudo dnf install gcc \
          libuuid-devel \
          openssl-devel \
          libpciaccess-devel \
          libusb-devel

Build
*****
To build the Device Model

.. code-block:: console

   make

To clean the build artefacts

.. code-block:: console

   make clean

Runtime dependencies
********************

* On CentOS

.. code-block:: console

   sudo yum install openssl-libs \
                    zlib \
                    libpciaccess \
                    libuuid \
                    libusb

* On Fedora 27

.. code-block:: console

   sudo dnf install openssl-libs \
                    zlib \
                    libpciaccess \
                    libuuid \
                    libusb

.. _`ACRN Hypervisor`: https://github.com/projectacrn/acrn-hypervisor
.. _`Project ACRN documentation`: https://projectacrn.github.io/