xref: /linux/drivers/virtio/Kconfig (revision 8ca154e4910efff1b04e7750e007d75732c68323)
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
63f51e146fSYishai Hadasconfig VIRTIO_PCI_ADMIN_LEGACY
64f51e146fSYishai Hadas	bool
65f51e146fSYishai Hadas	depends on VIRTIO_PCI && (X86 || COMPILE_TEST)
66f51e146fSYishai Hadas	default y
67f51e146fSYishai Hadas
6846506da5SMichael S. Tsirkinconfig VIRTIO_PCI_LEGACY
6946506da5SMichael S. Tsirkin	bool "Support for legacy virtio draft 0.9.X and older devices"
7046506da5SMichael S. Tsirkin	default y
7146506da5SMichael S. Tsirkin	depends on VIRTIO_PCI
72d89c8169SWu Zongyong	select VIRTIO_PCI_LIB_LEGACY
73a7f7f624SMasahiro Yamada	help
7446506da5SMichael S. Tsirkin          Virtio PCI Card 0.9.X Draft (circa 2014) and older device support.
7546506da5SMichael S. Tsirkin
7646506da5SMichael S. Tsirkin	  This option enables building a transitional driver, supporting
7746506da5SMichael S. Tsirkin	  both devices conforming to Virtio 1 specification, and legacy devices.
7846506da5SMichael S. Tsirkin	  If disabled, you get a slightly smaller, non-transitional driver,
7946506da5SMichael S. Tsirkin	  with no legacy compatibility.
8046506da5SMichael S. Tsirkin
8146506da5SMichael S. Tsirkin          So look out into your driveway.  Do you have a flying car?  If
8246506da5SMichael S. Tsirkin          so, you can happily disable this option and virtio will not
8346506da5SMichael S. Tsirkin          break.  Otherwise, leave it set.  Unless you're testing what
8446506da5SMichael S. Tsirkin          life will be like in The Future.
8546506da5SMichael S. Tsirkin
8646506da5SMichael S. Tsirkin	  If unsure, say Y.
8746506da5SMichael S. Tsirkin
88c043b4a8SJason Wangconfig VIRTIO_VDPA
89c043b4a8SJason Wang	tristate "vDPA driver for virtio devices"
9058ad1372SMichael S. Tsirkin	depends on VDPA
91c043b4a8SJason Wang	select VIRTIO
92c043b4a8SJason Wang	help
93c043b4a8SJason Wang	  This driver provides support for virtio based paravirtual
94c043b4a8SJason Wang	  device driver over vDPA bus. For this to be useful, you need
95c043b4a8SJason Wang	  an appropriate vDPA device implementation that operates on a
96c043b4a8SJason Wang	  physical device to allow the datapath of virtio to be
97c043b4a8SJason Wang	  offloaded to hardware.
98c043b4a8SJason Wang
99c043b4a8SJason Wang	  If unsure, say M.
100c043b4a8SJason Wang
1016e84200cSPankaj Guptaconfig VIRTIO_PMEM
1026e84200cSPankaj Gupta	tristate "Support for virtio pmem driver"
1036e84200cSPankaj Gupta	depends on VIRTIO
1046e84200cSPankaj Gupta	depends on LIBNVDIMM
1056e84200cSPankaj Gupta	help
1066e84200cSPankaj Gupta	  This driver provides access to virtio-pmem devices, storage devices
1076e84200cSPankaj Gupta	  that are mapped into the physical address space - similar to NVDIMMs
1086e84200cSPankaj Gupta	   - with a virtio-based flushing interface.
1096e84200cSPankaj Gupta
1106e84200cSPankaj Gupta	  If unsure, say Y.
1116e84200cSPankaj Gupta
1126b35e407SRusty Russellconfig VIRTIO_BALLOON
1137a23eb28SRusty Russell	tristate "Virtio balloon driver"
1147a23eb28SRusty Russell	depends on VIRTIO
11509316c09SKonstantin Khlebnikov	select MEMORY_BALLOON
116b0c504f1SAlexander Duyck	select PAGE_REPORTING
117a7f7f624SMasahiro Yamada	help
1186b35e407SRusty Russell	 This driver supports increasing and decreasing the amount
1196b35e407SRusty Russell	 of memory within a KVM guest.
1206b35e407SRusty Russell
1216b35e407SRusty Russell	 If unsure, say M.
1226b35e407SRusty Russell
1235f1f79bbSDavid Hildenbrandconfig VIRTIO_MEM
1245f1f79bbSDavid Hildenbrand	tristate "Virtio mem driver"
12538968bcdSDavid Hildenbrand	depends on X86_64 || ARM64 || RISCV || S390
1265f1f79bbSDavid Hildenbrand	depends on VIRTIO
12750f9481eSDavid Hildenbrand	depends on MEMORY_HOTPLUG
1285f1f79bbSDavid Hildenbrand	depends on MEMORY_HOTREMOVE
129a96b0d06SWeilong Chen	depends on CONTIG_ALLOC
1302128f4e2SDavid Hildenbrand	depends on EXCLUSIVE_SYSTEM_RAM
1315f1f79bbSDavid Hildenbrand	help
1325f1f79bbSDavid Hildenbrand	 This driver provides access to virtio-mem paravirtualized memory
1335f1f79bbSDavid Hildenbrand	 devices, allowing to hotplug and hotunplug memory.
1345f1f79bbSDavid Hildenbrand
13538968bcdSDavid Hildenbrand	 This driver currently supports x86-64, arm64, riscv and s390.
13638968bcdSDavid Hildenbrand	 Although it should compile on other architectures that implement
13738968bcdSDavid Hildenbrand	 memory hot(un)plug, architecture-specific and/or common
13838968bcdSDavid Hildenbrand	 code changes may be required for virtio-mem, kdump and kexec to
13938968bcdSDavid Hildenbrand	 work as expected.
1405f1f79bbSDavid Hildenbrand
1415f1f79bbSDavid Hildenbrand	 If unsure, say M.
1425f1f79bbSDavid Hildenbrand
143271c8651SGerd Hoffmannconfig VIRTIO_INPUT
144271c8651SGerd Hoffmann	tristate "Virtio input driver"
145271c8651SGerd Hoffmann	depends on VIRTIO
146271c8651SGerd Hoffmann	depends on INPUT
147a7f7f624SMasahiro Yamada	help
148271c8651SGerd Hoffmann	 This driver supports virtio input devices such as
149271c8651SGerd Hoffmann	 keyboards, mice and tablets.
150271c8651SGerd Hoffmann
151271c8651SGerd Hoffmann	 If unsure, say M.
152271c8651SGerd Hoffmann
153edfd52e6SPawel Mollconfig VIRTIO_MMIO
154d72c5a8cSKees Cook	tristate "Platform bus driver for memory mapped virtio devices"
155780bc790SAndy Lutomirski	depends on HAS_IOMEM && HAS_DMA
156edfd52e6SPawel Moll	select VIRTIO
157a7f7f624SMasahiro Yamada	help
158edfd52e6SPawel Moll	 This drivers provides support for memory mapped virtio
159edfd52e6SPawel Moll	 platform device driver.
160edfd52e6SPawel Moll
161edfd52e6SPawel Moll 	 If unsure, say N.
162edfd52e6SPawel Moll
16381a054ceSPawel Mollconfig VIRTIO_MMIO_CMDLINE_DEVICES
16481a054ceSPawel Moll	bool "Memory mapped virtio devices parameter parsing"
16581a054ceSPawel Moll	depends on VIRTIO_MMIO
166a7f7f624SMasahiro Yamada	help
16781a054ceSPawel Moll	 Allow virtio-mmio devices instantiation via the kernel command line
16881a054ceSPawel Moll	 or module parameters. Be aware that using incorrect parameters (base
16981a054ceSPawel Moll	 address in particular) can crash your system - you have been warned.
1708c27ceffSMauro Carvalho Chehab	 See Documentation/admin-guide/kernel-parameters.rst for details.
17181a054ceSPawel Moll
17281a054ceSPawel Moll	 If unsure, say 'N'.
17381a054ceSPawel Moll
1749fe2f897SDavid Stevensconfig VIRTIO_DMA_SHARED_BUFFER
1759fe2f897SDavid Stevens	tristate
1769fe2f897SDavid Stevens	depends on DMA_SHARED_BUFFER
1779fe2f897SDavid Stevens	help
1789fe2f897SDavid Stevens	 This option adds a flavor of dma buffers that are backed by
1799fe2f897SDavid Stevens	 virtio resources.
1809fe2f897SDavid Stevens
18196a8326dSJiri Pirkoconfig VIRTIO_DEBUG
18296a8326dSJiri Pirko	bool "Debug facilities"
18396a8326dSJiri Pirko	depends on VIRTIO
18496a8326dSJiri Pirko	help
18596a8326dSJiri Pirko	  Enable this to expose debug facilities over debugfs.
18696a8326dSJiri Pirko	  This allows to debug features, to see what features the device
18796a8326dSJiri Pirko	  advertises and to set filter for features used by driver.
18896a8326dSJiri Pirko
18996a8326dSJiri Pirko	  If unsure, say N.
19096a8326dSJiri Pirko
1910623c759SPeter Hilberconfig VIRTIO_RTC
1920623c759SPeter Hilber	tristate "Virtio RTC driver"
1930623c759SPeter Hilber	depends on VIRTIO
1940623c759SPeter Hilber	depends on PTP_1588_CLOCK_OPTIONAL
1950623c759SPeter Hilber	help
1960623c759SPeter Hilber	 This driver provides current time from a Virtio RTC device. The driver
1979a17125aSPeter Hilber	 provides the time through one or more clocks. The Virtio RTC PTP
198*9d4f22fdSPeter Hilber	 clocks and/or the Real Time Clock driver for Virtio RTC must be
199*9d4f22fdSPeter Hilber	 enabled to expose the clocks to userspace.
2000623c759SPeter Hilber
2010623c759SPeter Hilber	 To compile this code as a module, choose M here: the module will be
2020623c759SPeter Hilber	 called virtio_rtc.
2030623c759SPeter Hilber
2040623c759SPeter Hilber	 If unsure, say M.
2050623c759SPeter Hilber
2069a17125aSPeter Hilberif VIRTIO_RTC
2079a17125aSPeter Hilber
208*9d4f22fdSPeter Hilbercomment "WARNING: Consider enabling VIRTIO_RTC_PTP and/or VIRTIO_RTC_CLASS."
209*9d4f22fdSPeter Hilber	depends on !VIRTIO_RTC_PTP && !VIRTIO_RTC_CLASS
2109a17125aSPeter Hilber
2119a17125aSPeter Hilbercomment "Enable PTP_1588_CLOCK in order to enable VIRTIO_RTC_PTP."
2129a17125aSPeter Hilber	depends on PTP_1588_CLOCK=n
2139a17125aSPeter Hilber
2149a17125aSPeter Hilberconfig VIRTIO_RTC_PTP
2159a17125aSPeter Hilber	bool "Virtio RTC PTP clocks"
2169a17125aSPeter Hilber	default y
2179a17125aSPeter Hilber	depends on PTP_1588_CLOCK
2189a17125aSPeter Hilber	help
2199a17125aSPeter Hilber	 This exposes any Virtio RTC clocks as PTP Hardware Clocks (PHCs) to
2209a17125aSPeter Hilber	 userspace. The PHC sysfs attribute "clock_name" describes the clock
2219a17125aSPeter Hilber	 type.
2229a17125aSPeter Hilber
2239a17125aSPeter Hilber	 If unsure, say Y.
2249a17125aSPeter Hilber
225e2ef1675SPeter Hilberconfig VIRTIO_RTC_ARM
226e2ef1675SPeter Hilber	bool "Virtio RTC cross-timestamping using Arm Generic Timer"
227e2ef1675SPeter Hilber	default y
228e2ef1675SPeter Hilber	depends on VIRTIO_RTC_PTP && ARM_ARCH_TIMER
229e2ef1675SPeter Hilber	help
230e2ef1675SPeter Hilber	 This enables Virtio RTC cross-timestamping using the Arm Generic Timer.
231e2ef1675SPeter Hilber	 It only has an effect if the Virtio RTC device also supports this. The
232e2ef1675SPeter Hilber	 cross-timestamp is available through the PTP clock driver precise
233e2ef1675SPeter Hilber	 cross-timestamp ioctl (PTP_SYS_OFFSET_PRECISE2 aka
234e2ef1675SPeter Hilber	 PTP_SYS_OFFSET_PRECISE).
235e2ef1675SPeter Hilber
236e2ef1675SPeter Hilber	 If unsure, say Y.
237e2ef1675SPeter Hilber
238*9d4f22fdSPeter Hilbercomment "Enable RTC_CLASS in order to enable VIRTIO_RTC_CLASS."
239*9d4f22fdSPeter Hilber	depends on RTC_CLASS=n
240*9d4f22fdSPeter Hilber
241*9d4f22fdSPeter Hilberconfig VIRTIO_RTC_CLASS
242*9d4f22fdSPeter Hilber	bool "Real Time Clock driver for Virtio RTC"
243*9d4f22fdSPeter Hilber	default y
244*9d4f22fdSPeter Hilber	depends on RTC_CLASS
245*9d4f22fdSPeter Hilber	help
246*9d4f22fdSPeter Hilber	 This exposes the Virtio RTC UTC-like clock as a Linux Real Time Clock.
247*9d4f22fdSPeter Hilber	 It only has an effect if the Virtio RTC device has a UTC-like clock
248*9d4f22fdSPeter Hilber	 which smears leap seconds to avoid steps. The Real Time Clock is
249*9d4f22fdSPeter Hilber	 read-only, and may support setting an alarm.
250*9d4f22fdSPeter Hilber
251*9d4f22fdSPeter Hilber	 If unsure, say Y.
252*9d4f22fdSPeter Hilber
2539a17125aSPeter Hilberendif # VIRTIO_RTC
2549a17125aSPeter Hilber
2557b95fec6SVincent Legollendif # VIRTIO_MENU
256