|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | config VIRTIO_ANCHOR | 
|  | bool | 
|  |  | 
|  | config VIRTIO | 
|  | tristate | 
|  | select VIRTIO_ANCHOR | 
|  | help | 
|  | This option is selected by any driver which implements the virtio | 
|  | bus, such as CONFIG_VIRTIO_PCI, CONFIG_VIRTIO_MMIO, CONFIG_RPMSG | 
|  | or CONFIG_S390_GUEST. | 
|  |  | 
|  | config VIRTIO_PCI_LIB | 
|  | tristate | 
|  | help | 
|  | Modern PCI device implementation. This module implements the | 
|  | basic probe and control for devices which are based on modern | 
|  | PCI device with possible vendor specific extensions. Any | 
|  | module that selects this module must depend on PCI. | 
|  |  | 
|  | config VIRTIO_PCI_LIB_LEGACY | 
|  | tristate | 
|  | help | 
|  | Legacy PCI device (Virtio PCI Card 0.9.x Draft and older device) | 
|  | implementation. | 
|  | This module implements the basic probe and control for devices | 
|  | which are based on legacy PCI device. Any module that selects this | 
|  | module must depend on PCI. | 
|  |  | 
|  | menuconfig VIRTIO_MENU | 
|  | bool "Virtio drivers" | 
|  | default y | 
|  |  | 
|  | if VIRTIO_MENU | 
|  |  | 
|  | config VIRTIO_HARDEN_NOTIFICATION | 
|  | bool "Harden virtio notification" | 
|  | depends on BROKEN | 
|  | help | 
|  | Enable this to harden the device notifications and suppress | 
|  | those that happen at a time where notifications are illegal. | 
|  |  | 
|  | Experimental: Note that several drivers still have issues that | 
|  | may cause crashes or hangs when correct handling of | 
|  | notifications is enforced; depending on the subset of | 
|  | drivers and devices you use, this may or may not work. | 
|  |  | 
|  | If unsure, say N. | 
|  |  | 
|  | config VIRTIO_PCI | 
|  | tristate "PCI driver for virtio devices" | 
|  | depends on PCI | 
|  | select VIRTIO_PCI_LIB | 
|  | select VIRTIO | 
|  | help | 
|  | This driver provides support for virtio based paravirtual device | 
|  | drivers over PCI.  This requires that your VMM has appropriate PCI | 
|  | virtio backends.  Most QEMU based VMMs should support these devices | 
|  | (like KVM or Xen). | 
|  |  | 
|  | If unsure, say M. | 
|  |  | 
|  | config VIRTIO_PCI_LEGACY | 
|  | bool "Support for legacy virtio draft 0.9.X and older devices" | 
|  | default y | 
|  | depends on VIRTIO_PCI | 
|  | select VIRTIO_PCI_LIB_LEGACY | 
|  | help | 
|  | Virtio PCI Card 0.9.X Draft (circa 2014) and older device support. | 
|  |  | 
|  | This option enables building a transitional driver, supporting | 
|  | both devices conforming to Virtio 1 specification, and legacy devices. | 
|  | If disabled, you get a slightly smaller, non-transitional driver, | 
|  | with no legacy compatibility. | 
|  |  | 
|  | So look out into your driveway.  Do you have a flying car?  If | 
|  | so, you can happily disable this option and virtio will not | 
|  | break.  Otherwise, leave it set.  Unless you're testing what | 
|  | life will be like in The Future. | 
|  |  | 
|  | If unsure, say Y. | 
|  |  | 
|  | config VIRTIO_VDPA | 
|  | tristate "vDPA driver for virtio devices" | 
|  | depends on VDPA | 
|  | select VIRTIO | 
|  | help | 
|  | This driver provides support for virtio based paravirtual | 
|  | device driver over vDPA bus. For this to be useful, you need | 
|  | an appropriate vDPA device implementation that operates on a | 
|  | physical device to allow the datapath of virtio to be | 
|  | offloaded to hardware. | 
|  |  | 
|  | If unsure, say M. | 
|  |  | 
|  | config VIRTIO_PMEM | 
|  | tristate "Support for virtio pmem driver" | 
|  | depends on VIRTIO | 
|  | depends on LIBNVDIMM | 
|  | help | 
|  | This driver provides access to virtio-pmem devices, storage devices | 
|  | that are mapped into the physical address space - similar to NVDIMMs | 
|  | - with a virtio-based flushing interface. | 
|  |  | 
|  | If unsure, say Y. | 
|  |  | 
|  | config VIRTIO_BALLOON | 
|  | tristate "Virtio balloon driver" | 
|  | depends on VIRTIO | 
|  | select MEMORY_BALLOON | 
|  | select PAGE_REPORTING | 
|  | help | 
|  | This driver supports increasing and decreasing the amount | 
|  | of memory within a KVM guest. | 
|  |  | 
|  | If unsure, say M. | 
|  |  | 
|  | config VIRTIO_MEM | 
|  | tristate "Virtio mem driver" | 
|  | depends on X86_64 || ARM64 | 
|  | depends on VIRTIO | 
|  | depends on MEMORY_HOTPLUG | 
|  | depends on MEMORY_HOTREMOVE | 
|  | depends on CONTIG_ALLOC | 
|  | depends on EXCLUSIVE_SYSTEM_RAM | 
|  | help | 
|  | This driver provides access to virtio-mem paravirtualized memory | 
|  | devices, allowing to hotplug and hotunplug memory. | 
|  |  | 
|  | This driver currently only supports x86-64 and arm64. Although it | 
|  | should compile on other architectures that implement memory | 
|  | hot(un)plug, architecture-specific and/or common | 
|  | code changes may be required for virtio-mem, kdump and kexec to work as | 
|  | expected. | 
|  |  | 
|  | If unsure, say M. | 
|  |  | 
|  | config VIRTIO_INPUT | 
|  | tristate "Virtio input driver" | 
|  | depends on VIRTIO | 
|  | depends on INPUT | 
|  | help | 
|  | This driver supports virtio input devices such as | 
|  | keyboards, mice and tablets. | 
|  |  | 
|  | If unsure, say M. | 
|  |  | 
|  | config VIRTIO_MMIO | 
|  | tristate "Platform bus driver for memory mapped virtio devices" | 
|  | depends on HAS_IOMEM && HAS_DMA | 
|  | select VIRTIO | 
|  | help | 
|  | This drivers provides support for memory mapped virtio | 
|  | platform device driver. | 
|  |  | 
|  | If unsure, say N. | 
|  |  | 
|  | config VIRTIO_MMIO_CMDLINE_DEVICES | 
|  | bool "Memory mapped virtio devices parameter parsing" | 
|  | depends on VIRTIO_MMIO | 
|  | help | 
|  | Allow virtio-mmio devices instantiation via the kernel command line | 
|  | or module parameters. Be aware that using incorrect parameters (base | 
|  | address in particular) can crash your system - you have been warned. | 
|  | See Documentation/admin-guide/kernel-parameters.rst for details. | 
|  |  | 
|  | If unsure, say 'N'. | 
|  |  | 
|  | config VIRTIO_DMA_SHARED_BUFFER | 
|  | tristate | 
|  | depends on DMA_SHARED_BUFFER | 
|  | help | 
|  | This option adds a flavor of dma buffers that are backed by | 
|  | virtio resources. | 
|  |  | 
|  | endif # VIRTIO_MENU |