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