xref: /openbmc/linux/drivers/virtio/Kconfig (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2a603002eSJuergen Grossconfig VIRTIO_ANCHOR
3a603002eSJuergen Gross	bool
4a603002eSJuergen Gross
5ec3d41c4SRusty Russellconfig VIRTIO
6c6fd4701SRusty Russell	tristate
7a603002eSJuergen Gross	select VIRTIO_ANCHOR
8a7f7f624SMasahiro Yamada	help
9387daf17SRusty Russell	  This option is selected by any driver which implements the virtio
10ecda85e7SJuergen Gross	  bus, such as CONFIG_VIRTIO_PCI, CONFIG_VIRTIO_MMIO, CONFIG_RPMSG
11ecda85e7SJuergen Gross	  or CONFIG_S390_GUEST.
120a8a69ddSRusty Russell
13fd502729SJason Wangconfig VIRTIO_PCI_LIB
14fd502729SJason Wang	tristate
15fd502729SJason Wang	help
16fd502729SJason Wang	  Modern PCI device implementation. This module implements the
17fd502729SJason Wang	  basic probe and control for devices which are based on modern
18fd502729SJason Wang	  PCI device with possible vendor specific extensions. Any
19fd502729SJason Wang	  module that selects this module must depend on PCI.
20fd502729SJason Wang
21d89c8169SWu Zongyongconfig VIRTIO_PCI_LIB_LEGACY
22d89c8169SWu Zongyong	tristate
23d89c8169SWu Zongyong	help
24d89c8169SWu Zongyong	  Legacy PCI device (Virtio PCI Card 0.9.x Draft and older device)
25d89c8169SWu Zongyong	  implementation.
26d89c8169SWu Zongyong	  This module implements the basic probe and control for devices
27d89c8169SWu Zongyong	  which are based on legacy PCI device. Any module that selects this
28d89c8169SWu Zongyong	  module must depend on PCI.
29d89c8169SWu Zongyong
307b95fec6SVincent Legollmenuconfig VIRTIO_MENU
317b95fec6SVincent Legoll	bool "Virtio drivers"
327b95fec6SVincent Legoll	default y
337b95fec6SVincent Legoll
347b95fec6SVincent Legollif VIRTIO_MENU
35e7254219SOhad Ben-Cohen
36c346dae4SJason Wangconfig VIRTIO_HARDEN_NOTIFICATION
37c346dae4SJason Wang        bool "Harden virtio notification"
38ebe797f2SMichael S. Tsirkin        depends on BROKEN
39c346dae4SJason Wang        help
40c346dae4SJason Wang          Enable this to harden the device notifications and suppress
41c346dae4SJason Wang          those that happen at a time where notifications are illegal.
42c346dae4SJason Wang
43ebe797f2SMichael S. Tsirkin          Experimental: Note that several drivers still have issues that
44c346dae4SJason Wang          may cause crashes or hangs when correct handling of
45c346dae4SJason Wang          notifications is enforced; depending on the subset of
46c346dae4SJason Wang          drivers and devices you use, this may or may not work.
47c346dae4SJason Wang
48c346dae4SJason Wang          If unsure, say N.
49c346dae4SJason Wang
503343660dSAnthony Liguoriconfig VIRTIO_PCI
51d72c5a8cSKees Cook	tristate "PCI driver for virtio devices"
52d72c5a8cSKees Cook	depends on PCI
53fd502729SJason Wang	select VIRTIO_PCI_LIB
543343660dSAnthony Liguori	select VIRTIO
55a7f7f624SMasahiro Yamada	help
56b2a6d51dSMichael S. Tsirkin	  This driver provides support for virtio based paravirtual device
573343660dSAnthony Liguori	  drivers over PCI.  This requires that your VMM has appropriate PCI
583343660dSAnthony Liguori	  virtio backends.  Most QEMU based VMMs should support these devices
593343660dSAnthony Liguori	  (like KVM or Xen).
603343660dSAnthony Liguori
613343660dSAnthony Liguori	  If unsure, say M.
623343660dSAnthony Liguori
6346506da5SMichael S. Tsirkinconfig VIRTIO_PCI_LEGACY
6446506da5SMichael S. Tsirkin	bool "Support for legacy virtio draft 0.9.X and older devices"
6546506da5SMichael S. Tsirkin	default y
6646506da5SMichael S. Tsirkin	depends on VIRTIO_PCI
67d89c8169SWu Zongyong	select VIRTIO_PCI_LIB_LEGACY
68a7f7f624SMasahiro Yamada	help
6946506da5SMichael S. Tsirkin          Virtio PCI Card 0.9.X Draft (circa 2014) and older device support.
7046506da5SMichael S. Tsirkin
7146506da5SMichael S. Tsirkin	  This option enables building a transitional driver, supporting
7246506da5SMichael S. Tsirkin	  both devices conforming to Virtio 1 specification, and legacy devices.
7346506da5SMichael S. Tsirkin	  If disabled, you get a slightly smaller, non-transitional driver,
7446506da5SMichael S. Tsirkin	  with no legacy compatibility.
7546506da5SMichael S. Tsirkin
7646506da5SMichael S. Tsirkin          So look out into your driveway.  Do you have a flying car?  If
7746506da5SMichael S. Tsirkin          so, you can happily disable this option and virtio will not
7846506da5SMichael S. Tsirkin          break.  Otherwise, leave it set.  Unless you're testing what
7946506da5SMichael S. Tsirkin          life will be like in The Future.
8046506da5SMichael S. Tsirkin
8146506da5SMichael S. Tsirkin	  If unsure, say Y.
8246506da5SMichael S. Tsirkin
83c043b4a8SJason Wangconfig VIRTIO_VDPA
84c043b4a8SJason Wang	tristate "vDPA driver for virtio devices"
8558ad1372SMichael S. Tsirkin	depends on VDPA
86c043b4a8SJason Wang	select VIRTIO
87c043b4a8SJason Wang	help
88c043b4a8SJason Wang	  This driver provides support for virtio based paravirtual
89c043b4a8SJason Wang	  device driver over vDPA bus. For this to be useful, you need
90c043b4a8SJason Wang	  an appropriate vDPA device implementation that operates on a
91c043b4a8SJason Wang	  physical device to allow the datapath of virtio to be
92c043b4a8SJason Wang	  offloaded to hardware.
93c043b4a8SJason Wang
94c043b4a8SJason Wang	  If unsure, say M.
95c043b4a8SJason Wang
966e84200cSPankaj Guptaconfig VIRTIO_PMEM
976e84200cSPankaj Gupta	tristate "Support for virtio pmem driver"
986e84200cSPankaj Gupta	depends on VIRTIO
996e84200cSPankaj Gupta	depends on LIBNVDIMM
1006e84200cSPankaj Gupta	help
1016e84200cSPankaj Gupta	  This driver provides access to virtio-pmem devices, storage devices
1026e84200cSPankaj Gupta	  that are mapped into the physical address space - similar to NVDIMMs
1036e84200cSPankaj Gupta	   - with a virtio-based flushing interface.
1046e84200cSPankaj Gupta
1056e84200cSPankaj Gupta	  If unsure, say Y.
1066e84200cSPankaj Gupta
1076b35e407SRusty Russellconfig VIRTIO_BALLOON
1087a23eb28SRusty Russell	tristate "Virtio balloon driver"
1097a23eb28SRusty Russell	depends on VIRTIO
11009316c09SKonstantin Khlebnikov	select MEMORY_BALLOON
111b0c504f1SAlexander Duyck	select PAGE_REPORTING
112a7f7f624SMasahiro Yamada	help
1136b35e407SRusty Russell	 This driver supports increasing and decreasing the amount
1146b35e407SRusty Russell	 of memory within a KVM guest.
1156b35e407SRusty Russell
1166b35e407SRusty Russell	 If unsure, say M.
1176b35e407SRusty Russell
1185f1f79bbSDavid Hildenbrandconfig VIRTIO_MEM
1195f1f79bbSDavid Hildenbrand	tristate "Virtio mem driver"
1206f4abbaaSGavin Shan	depends on X86_64 || ARM64
1215f1f79bbSDavid Hildenbrand	depends on VIRTIO
12250f9481eSDavid Hildenbrand	depends on MEMORY_HOTPLUG
1235f1f79bbSDavid Hildenbrand	depends on MEMORY_HOTREMOVE
124a96b0d06SWeilong Chen	depends on CONTIG_ALLOC
1252128f4e2SDavid Hildenbrand	depends on EXCLUSIVE_SYSTEM_RAM
1265f1f79bbSDavid Hildenbrand	help
1275f1f79bbSDavid Hildenbrand	 This driver provides access to virtio-mem paravirtualized memory
1285f1f79bbSDavid Hildenbrand	 devices, allowing to hotplug and hotunplug memory.
1295f1f79bbSDavid Hildenbrand
130*0b6fd46eSDavid Hildenbrand	 This driver currently only supports x86-64 and arm64. Although it
131*0b6fd46eSDavid Hildenbrand	 should compile on other architectures that implement memory
132*0b6fd46eSDavid Hildenbrand	 hot(un)plug, architecture-specific and/or common
133*0b6fd46eSDavid Hildenbrand	 code changes may be required for virtio-mem, kdump and kexec to work as
134*0b6fd46eSDavid Hildenbrand	 expected.
1355f1f79bbSDavid Hildenbrand
1365f1f79bbSDavid Hildenbrand	 If unsure, say M.
1375f1f79bbSDavid Hildenbrand
138271c8651SGerd Hoffmannconfig VIRTIO_INPUT
139271c8651SGerd Hoffmann	tristate "Virtio input driver"
140271c8651SGerd Hoffmann	depends on VIRTIO
141271c8651SGerd Hoffmann	depends on INPUT
142a7f7f624SMasahiro Yamada	help
143271c8651SGerd Hoffmann	 This driver supports virtio input devices such as
144271c8651SGerd Hoffmann	 keyboards, mice and tablets.
145271c8651SGerd Hoffmann
146271c8651SGerd Hoffmann	 If unsure, say M.
147271c8651SGerd Hoffmann
148edfd52e6SPawel Mollconfig VIRTIO_MMIO
149d72c5a8cSKees Cook	tristate "Platform bus driver for memory mapped virtio devices"
150780bc790SAndy Lutomirski	depends on HAS_IOMEM && HAS_DMA
151edfd52e6SPawel Moll	select VIRTIO
152a7f7f624SMasahiro Yamada	help
153edfd52e6SPawel Moll	 This drivers provides support for memory mapped virtio
154edfd52e6SPawel Moll	 platform device driver.
155edfd52e6SPawel Moll
156edfd52e6SPawel Moll 	 If unsure, say N.
157edfd52e6SPawel Moll
15881a054ceSPawel Mollconfig VIRTIO_MMIO_CMDLINE_DEVICES
15981a054ceSPawel Moll	bool "Memory mapped virtio devices parameter parsing"
16081a054ceSPawel Moll	depends on VIRTIO_MMIO
161a7f7f624SMasahiro Yamada	help
16281a054ceSPawel Moll	 Allow virtio-mmio devices instantiation via the kernel command line
16381a054ceSPawel Moll	 or module parameters. Be aware that using incorrect parameters (base
16481a054ceSPawel Moll	 address in particular) can crash your system - you have been warned.
1658c27ceffSMauro Carvalho Chehab	 See Documentation/admin-guide/kernel-parameters.rst for details.
16681a054ceSPawel Moll
16781a054ceSPawel Moll	 If unsure, say 'N'.
16881a054ceSPawel Moll
1699fe2f897SDavid Stevensconfig VIRTIO_DMA_SHARED_BUFFER
1709fe2f897SDavid Stevens	tristate
1719fe2f897SDavid Stevens	depends on DMA_SHARED_BUFFER
1729fe2f897SDavid Stevens	help
1739fe2f897SDavid Stevens	 This option adds a flavor of dma buffers that are backed by
1749fe2f897SDavid Stevens	 virtio resources.
1759fe2f897SDavid Stevens
1767b95fec6SVincent Legollendif # VIRTIO_MENU
177