# SPDX-License-Identifier: GPL-2.0-only
#
# Virtualization support drivers
#

menuconfig VIRT_DRIVERS
	bool "Virtualization drivers"
	help
	  Say Y here to get to see options for device drivers that support
	  virtualization environments.

	  If you say N, all options in this submenu will be skipped and disabled.

if VIRT_DRIVERS

config VMGENID
	tristate "Virtual Machine Generation ID driver"
	default y
	help
	  Say Y here to use the hypervisor-provided Virtual Machine Generation ID
	  to reseed the RNG when the VM is cloned. This is highly recommended if
	  you intend to do any rollback / cloning / snapshotting of VMs.

	  Prefer Y to M so that this protection is activated very early.

config FSL_HV_MANAGER
	tristate "Freescale hypervisor management driver"
	depends on FSL_SOC
	select EPAPR_PARAVIRT
	help
          The Freescale hypervisor management driver provides several services
	  to drivers and applications related to the Freescale hypervisor:

          1) An ioctl interface for querying and managing partitions.

          2) A file interface to reading incoming doorbells.

          3) An interrupt handler for shutting down the partition upon
	     receiving the shutdown doorbell from a manager partition.

          4) A kernel interface for receiving callbacks when a managed
	     partition shuts down.

source "drivers/virt/vboxguest/Kconfig"

source "drivers/virt/nitro_enclaves/Kconfig"

source "drivers/virt/acrn/Kconfig"

source "drivers/virt/coco/Kconfig"

endif
