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