0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config VIRTIO_ANCHOR
0003 bool
0004
0005 config VIRTIO
0006 tristate
0007 select VIRTIO_ANCHOR
0008 help
0009 This option is selected by any driver which implements the virtio
0010 bus, such as CONFIG_VIRTIO_PCI, CONFIG_VIRTIO_MMIO, CONFIG_RPMSG
0011 or CONFIG_S390_GUEST.
0012
0013 config VIRTIO_PCI_LIB
0014 tristate
0015 help
0016 Modern PCI device implementation. This module implements the
0017 basic probe and control for devices which are based on modern
0018 PCI device with possible vendor specific extensions. Any
0019 module that selects this module must depend on PCI.
0020
0021 config VIRTIO_PCI_LIB_LEGACY
0022 tristate
0023 help
0024 Legacy PCI device (Virtio PCI Card 0.9.x Draft and older device)
0025 implementation.
0026 This module implements the basic probe and control for devices
0027 which are based on legacy PCI device. Any module that selects this
0028 module must depend on PCI.
0029
0030 menuconfig VIRTIO_MENU
0031 bool "Virtio drivers"
0032 default y
0033
0034 if VIRTIO_MENU
0035
0036 config VIRTIO_HARDEN_NOTIFICATION
0037 bool "Harden virtio notification"
0038 depends on BROKEN
0039 help
0040 Enable this to harden the device notifications and suppress
0041 those that happen at a time where notifications are illegal.
0042
0043 Experimental: Note that several drivers still have issues that
0044 may cause crashes or hangs when correct handling of
0045 notifications is enforced; depending on the subset of
0046 drivers and devices you use, this may or may not work.
0047
0048 If unsure, say N.
0049
0050 config VIRTIO_PCI
0051 tristate "PCI driver for virtio devices"
0052 depends on PCI
0053 select VIRTIO_PCI_LIB
0054 select VIRTIO
0055 help
0056 This driver provides support for virtio based paravirtual device
0057 drivers over PCI. This requires that your VMM has appropriate PCI
0058 virtio backends. Most QEMU based VMMs should support these devices
0059 (like KVM or Xen).
0060
0061 If unsure, say M.
0062
0063 config VIRTIO_PCI_LEGACY
0064 bool "Support for legacy virtio draft 0.9.X and older devices"
0065 default y
0066 depends on VIRTIO_PCI
0067 select VIRTIO_PCI_LIB_LEGACY
0068 help
0069 Virtio PCI Card 0.9.X Draft (circa 2014) and older device support.
0070
0071 This option enables building a transitional driver, supporting
0072 both devices conforming to Virtio 1 specification, and legacy devices.
0073 If disabled, you get a slightly smaller, non-transitional driver,
0074 with no legacy compatibility.
0075
0076 So look out into your driveway. Do you have a flying car? If
0077 so, you can happily disable this option and virtio will not
0078 break. Otherwise, leave it set. Unless you're testing what
0079 life will be like in The Future.
0080
0081 If unsure, say Y.
0082
0083 config VIRTIO_VDPA
0084 tristate "vDPA driver for virtio devices"
0085 depends on VDPA
0086 select VIRTIO
0087 help
0088 This driver provides support for virtio based paravirtual
0089 device driver over vDPA bus. For this to be useful, you need
0090 an appropriate vDPA device implementation that operates on a
0091 physical device to allow the datapath of virtio to be
0092 offloaded to hardware.
0093
0094 If unsure, say M.
0095
0096 config VIRTIO_PMEM
0097 tristate "Support for virtio pmem driver"
0098 depends on VIRTIO
0099 depends on LIBNVDIMM
0100 help
0101 This driver provides access to virtio-pmem devices, storage devices
0102 that are mapped into the physical address space - similar to NVDIMMs
0103 - with a virtio-based flushing interface.
0104
0105 If unsure, say Y.
0106
0107 config VIRTIO_BALLOON
0108 tristate "Virtio balloon driver"
0109 depends on VIRTIO
0110 select MEMORY_BALLOON
0111 select PAGE_REPORTING
0112 help
0113 This driver supports increasing and decreasing the amount
0114 of memory within a KVM guest.
0115
0116 If unsure, say M.
0117
0118 config VIRTIO_MEM
0119 tristate "Virtio mem driver"
0120 depends on X86_64 || ARM64
0121 depends on VIRTIO
0122 depends on MEMORY_HOTPLUG
0123 depends on MEMORY_HOTREMOVE
0124 depends on CONTIG_ALLOC
0125 depends on EXCLUSIVE_SYSTEM_RAM
0126 help
0127 This driver provides access to virtio-mem paravirtualized memory
0128 devices, allowing to hotplug and hotunplug memory.
0129
0130 This driver currently only supports x86-64 and arm64. Although it
0131 should compile on other architectures that implement memory
0132 hot(un)plug, architecture-specific and/or common
0133 code changes may be required for virtio-mem, kdump and kexec to work as
0134 expected.
0135
0136 If unsure, say M.
0137
0138 config VIRTIO_INPUT
0139 tristate "Virtio input driver"
0140 depends on VIRTIO
0141 depends on INPUT
0142 help
0143 This driver supports virtio input devices such as
0144 keyboards, mice and tablets.
0145
0146 If unsure, say M.
0147
0148 config VIRTIO_MMIO
0149 tristate "Platform bus driver for memory mapped virtio devices"
0150 depends on HAS_IOMEM && HAS_DMA
0151 select VIRTIO
0152 help
0153 This drivers provides support for memory mapped virtio
0154 platform device driver.
0155
0156 If unsure, say N.
0157
0158 config VIRTIO_MMIO_CMDLINE_DEVICES
0159 bool "Memory mapped virtio devices parameter parsing"
0160 depends on VIRTIO_MMIO
0161 help
0162 Allow virtio-mmio devices instantiation via the kernel command line
0163 or module parameters. Be aware that using incorrect parameters (base
0164 address in particular) can crash your system - you have been warned.
0165 See Documentation/admin-guide/kernel-parameters.rst for details.
0166
0167 If unsure, say 'N'.
0168
0169 config VIRTIO_DMA_SHARED_BUFFER
0170 tristate
0171 depends on DMA_SHARED_BUFFER
0172 help
0173 This option adds a flavor of dma buffers that are backed by
0174 virtio resources.
0175
0176 endif # VIRTIO_MENU