| # SPDX-License-Identifier: GPL-2.0-only |
| config VIRTIO |
| tristate |
| 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" |
| 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 bugs 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 was only tested under x86-64 and arm64, but should |
| theoretically work on all architectures that support memory hotplug |
| and hotremove. |
| |
| 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 |