xref: /linux/drivers/virtio/Kconfig (revision 908fc4c2)
1# SPDX-License-Identifier: GPL-2.0-only
2config VIRTIO
3	tristate
4	help
5	  This option is selected by any driver which implements the virtio
6	  bus, such as CONFIG_VIRTIO_PCI, CONFIG_VIRTIO_MMIO, CONFIG_RPMSG
7	  or CONFIG_S390_GUEST.
8
9config VIRTIO_PCI_LIB
10	tristate
11	help
12	  Modern PCI device implementation. This module implements the
13	  basic probe and control for devices which are based on modern
14	  PCI device with possible vendor specific extensions. Any
15	  module that selects this module must depend on PCI.
16
17config VIRTIO_PCI_LIB_LEGACY
18	tristate
19	help
20	  Legacy PCI device (Virtio PCI Card 0.9.x Draft and older device)
21	  implementation.
22	  This module implements the basic probe and control for devices
23	  which are based on legacy PCI device. Any module that selects this
24	  module must depend on PCI.
25
26menuconfig VIRTIO_MENU
27	bool "Virtio drivers"
28	default y
29
30if VIRTIO_MENU
31
32config VIRTIO_HARDEN_NOTIFICATION
33        bool "Harden virtio notification"
34        help
35          Enable this to harden the device notifications and suppress
36          those that happen at a time where notifications are illegal.
37
38          Experimental: Note that several drivers still have bugs that
39          may cause crashes or hangs when correct handling of
40          notifications is enforced; depending on the subset of
41          drivers and devices you use, this may or may not work.
42
43          If unsure, say N.
44
45config VIRTIO_PCI
46	tristate "PCI driver for virtio devices"
47	depends on PCI
48	select VIRTIO_PCI_LIB
49	select VIRTIO
50	help
51	  This driver provides support for virtio based paravirtual device
52	  drivers over PCI.  This requires that your VMM has appropriate PCI
53	  virtio backends.  Most QEMU based VMMs should support these devices
54	  (like KVM or Xen).
55
56	  If unsure, say M.
57
58config VIRTIO_PCI_LEGACY
59	bool "Support for legacy virtio draft 0.9.X and older devices"
60	default y
61	depends on VIRTIO_PCI
62	select VIRTIO_PCI_LIB_LEGACY
63	help
64          Virtio PCI Card 0.9.X Draft (circa 2014) and older device support.
65
66	  This option enables building a transitional driver, supporting
67	  both devices conforming to Virtio 1 specification, and legacy devices.
68	  If disabled, you get a slightly smaller, non-transitional driver,
69	  with no legacy compatibility.
70
71          So look out into your driveway.  Do you have a flying car?  If
72          so, you can happily disable this option and virtio will not
73          break.  Otherwise, leave it set.  Unless you're testing what
74          life will be like in The Future.
75
76	  If unsure, say Y.
77
78config VIRTIO_VDPA
79	tristate "vDPA driver for virtio devices"
80	depends on VDPA
81	select VIRTIO
82	help
83	  This driver provides support for virtio based paravirtual
84	  device driver over vDPA bus. For this to be useful, you need
85	  an appropriate vDPA device implementation that operates on a
86	  physical device to allow the datapath of virtio to be
87	  offloaded to hardware.
88
89	  If unsure, say M.
90
91config VIRTIO_PMEM
92	tristate "Support for virtio pmem driver"
93	depends on VIRTIO
94	depends on LIBNVDIMM
95	help
96	  This driver provides access to virtio-pmem devices, storage devices
97	  that are mapped into the physical address space - similar to NVDIMMs
98	   - with a virtio-based flushing interface.
99
100	  If unsure, say Y.
101
102config VIRTIO_BALLOON
103	tristate "Virtio balloon driver"
104	depends on VIRTIO
105	select MEMORY_BALLOON
106	select PAGE_REPORTING
107	help
108	 This driver supports increasing and decreasing the amount
109	 of memory within a KVM guest.
110
111	 If unsure, say M.
112
113config VIRTIO_MEM
114	tristate "Virtio mem driver"
115	depends on X86_64 || ARM64
116	depends on VIRTIO
117	depends on MEMORY_HOTPLUG
118	depends on MEMORY_HOTREMOVE
119	depends on CONTIG_ALLOC
120	depends on EXCLUSIVE_SYSTEM_RAM
121	help
122	 This driver provides access to virtio-mem paravirtualized memory
123	 devices, allowing to hotplug and hotunplug memory.
124
125	 This driver was only tested under x86-64 and arm64, but should
126	 theoretically work on all architectures that support memory hotplug
127	 and hotremove.
128
129	 If unsure, say M.
130
131config VIRTIO_INPUT
132	tristate "Virtio input driver"
133	depends on VIRTIO
134	depends on INPUT
135	help
136	 This driver supports virtio input devices such as
137	 keyboards, mice and tablets.
138
139	 If unsure, say M.
140
141config VIRTIO_MMIO
142	tristate "Platform bus driver for memory mapped virtio devices"
143	depends on HAS_IOMEM && HAS_DMA
144	select VIRTIO
145	help
146	 This drivers provides support for memory mapped virtio
147	 platform device driver.
148
149 	 If unsure, say N.
150
151config VIRTIO_MMIO_CMDLINE_DEVICES
152	bool "Memory mapped virtio devices parameter parsing"
153	depends on VIRTIO_MMIO
154	help
155	 Allow virtio-mmio devices instantiation via the kernel command line
156	 or module parameters. Be aware that using incorrect parameters (base
157	 address in particular) can crash your system - you have been warned.
158	 See Documentation/admin-guide/kernel-parameters.rst for details.
159
160	 If unsure, say 'N'.
161
162config VIRTIO_DMA_SHARED_BUFFER
163	tristate
164	depends on DMA_SHARED_BUFFER
165	help
166	 This option adds a flavor of dma buffers that are backed by
167	 virtio resources.
168
169endif # VIRTIO_MENU
170