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