docs/system: Add vhost-user-input documentation

This adds basic documentation for vhost-user-input.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
Message-Id: <20231120043721.50555-3-leo.yan@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240104210945.1223134-10-alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Leo Yan 2024-01-04 21:09:43 +00:00 committed by Michael S. Tsirkin
parent a26105dd56
commit 887d577586
4 changed files with 50 additions and 1 deletions

View file

@ -2289,6 +2289,7 @@ L: virtio-fs@lists.linux.dev
virtio-input virtio-input
M: Gerd Hoffmann <kraxel@redhat.com> M: Gerd Hoffmann <kraxel@redhat.com>
S: Odd Fixes S: Odd Fixes
F: docs/system/devices/vhost-user-input.rst
F: hw/input/vhost-user-input.c F: hw/input/vhost-user-input.c
F: hw/input/virtio-input*.c F: hw/input/virtio-input*.c
F: include/hw/virtio/virtio-input.h F: include/hw/virtio/virtio-input.h

View file

@ -94,6 +94,7 @@ Emulated Devices
devices/virtio-gpu.rst devices/virtio-gpu.rst
devices/virtio-pmem.rst devices/virtio-pmem.rst
devices/virtio-snd.rst devices/virtio-snd.rst
devices/vhost-user-input.rst
devices/vhost-user-rng.rst devices/vhost-user-rng.rst
devices/canokey.rst devices/canokey.rst
devices/usb-u2f.rst devices/usb-u2f.rst

View file

@ -0,0 +1,45 @@
.. _vhost_user_input:
QEMU vhost-user-input - Input emulation
=======================================
This document describes the setup and usage of the Virtio input device.
The Virtio input device is a paravirtualized device for input events.
Description
-----------
The vhost-user-input device implementation was designed to work with a daemon
polling on input devices and passes input events to the guest.
QEMU provides a backend implementation in contrib/vhost-user-input.
Linux kernel support
--------------------
Virtio input requires a guest Linux kernel built with the
``CONFIG_VIRTIO_INPUT`` option.
Examples
--------
The backend daemon should be started first:
::
host# vhost-user-input --socket-path=input.sock \
--evdev-path=/dev/input/event17
The QEMU invocation needs to create a chardev socket to communicate with the
backend daemon and access the VirtIO queues with the guest over the
:ref:`shared memory <shared_memory_object>`.
::
host# qemu-system \
-chardev socket,path=/tmp/input.sock,id=mouse0 \
-device vhost-user-input-pci,chardev=mouse0 \
-m 4096 \
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on \
-numa node,memdev=mem \
...

View file

@ -42,7 +42,7 @@ platform details for what sort of virtio bus to use.
- See https://github.com/rust-vmm/vhost-device - See https://github.com/rust-vmm/vhost-device
* - vhost-user-input * - vhost-user-input
- Generic input driver - Generic input driver
- See contrib/vhost-user-input - :ref:`vhost_user_input`
* - vhost-user-rng * - vhost-user-rng
- Entropy driver - Entropy driver
- :ref:`vhost_user_rng` - :ref:`vhost_user_rng`
@ -91,6 +91,8 @@ following the :ref:`vhost_user_proto`. There are a number of daemons
that can be built when enabled by the project although any daemon that that can be built when enabled by the project although any daemon that
meets the specification for a given device can be used. meets the specification for a given device can be used.
.. _shared_memory_object:
Shared memory object Shared memory object
==================== ====================