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