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