aboutsummaryrefslogtreecommitdiff
path: root/docs/system/devices/vhost-user-input.rst
blob: 118eb78101c6a5a1b4a0f4c979ae73838b81ce06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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							\
      ...