acrn-hypervisor/devicemodel
Shiqing Gao 80b1edabf5 dm: block_if: support bypassing BST_BLOCK logic
With current implementation, in blockif_dequeue/blockif_complete,
if the current request is consecutive to any request in penq or busyq,
current request's status is set to BST_BLOCK. Then, this request is blocked
until the prior request, which blocks it, is completed.
It indicates that consecutive requests are executed sequentially.

This patch adds a flag `no_bst_block` to bypass such logic because:
1. the benefit of this logic is not noticeable;
2. there is a chance that a request is enqueued in block_if_queue but
   not dequeued when this logic is triggered along with the io_uring mechanism;

Example to use this flag:
`add_virtual_device                     5 virtio-blk /dev/nvme1n1,no_bst_block`

Note:
When io_uring is enabled, the BST_BLOCK logic would be bypassed.

Tracked-On: #8612

Signed-off-by: Shiqing Gao <shiqing.gao@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
2024-06-05 15:23:33 +08:00
..
arch/x86 dm: vm_event: send poweroff event on pm port write 2024-02-01 17:01:31 +08:00
bios OVMF release v3.0 2022-03-31 09:06:34 +08:00
core dm: update the `iothread` option to specify the CPU affinity 2024-06-05 15:23:33 +08:00
hw dm: block_if: support bypassing BST_BLOCK logic 2024-06-05 15:23:33 +08:00
include dm: update the `iothread` option to specify the CPU affinity 2024-06-05 15:23:33 +08:00
lib Update copyright year range in code headers 2022-07-15 11:48:35 +08:00
log Update copyright year range in code headers 2022-07-15 11:48:35 +08:00
Makefile dm: block_if: add the io_uring support 2024-06-05 15:23:33 +08:00
README.rst doc: terminology cleanup in DM readme 2021-11-24 06:29:25 -08:00
samples acrn-config: Reorg config tool folder 2021-01-27 11:08:28 +08:00

README.rst

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

Introduction
============

The ACRN Device Model provides **device sharing** capabilities between the
Service VM and post-launched User VMs. It is a component that is used in
conjunction with the `ACRN Hypervisor`_ and is installed within the Service
VM.

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