acrn-hypervisor/devicemodel
Jian Jun Chen f1e87f60fc dm: vrtc: use signalfd to poll signal from timer
In the current implementation sigev_notify is configured as
SIGEV_THREAD. When timer expires an async thread is created and
the registered timer callback is called in the context of this
thread. vrtc_update_timer will access the global data vrtc. There
is a race condition that vrtc is freed when deinit and then a timer
expires. In this case vrtc_update_timer will access a freed buffer
which causes problem such as heap corruption and segment fault.

In this patch signal model is used when timer is created. The signal
is masked and a signalfd is used to poll on it with mevent. This avoids
the race condition.

Signed-off-by: Jian Jun Chen <jian.jun.chen@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
Tracked-On: #1185
2018-09-11 10:50:16 +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 to v0.9 2018-09-07 16:56:08 +08:00
core DM: unmap ptdev BAR when deinit 2018-09-07 10:21:16 +08:00
hw dm: vrtc: use signalfd to poll signal from timer 2018-09-11 10:50:16 +08:00
include DM: unmap ptdev BAR when deinit 2018-09-07 10:21:16 +08:00
samples samples: Add AliOS as guest launch option 2018-09-10 11:27:09 +08:00
MAINTAINERS update home page information 2018-05-15 17:19:39 +08:00
Makefile security: Enable '-fpie, -pie' options 2018-08-31 11:18:26 +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/