Merge tag 'ceph-for-5.20-rc1' of https://github.com/ceph/ceph-client
[linux-block.git] / drivers / virtio / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 config VIRTIO_ANCHOR
3         bool
4
5 config 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
13 config 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
21 config 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
30 menuconfig VIRTIO_MENU
31         bool "Virtio drivers"
32         default y
33
34 if VIRTIO_MENU
35
36 config 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
49 config 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
62 config 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
82 config 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
95 config 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
106 config 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
117 config 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
135 config 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
145 config 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
155 config 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
166 config 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
173 endif # VIRTIO_MENU