| # SPDX-License-Identifier: GPL-2.0 | |
| menu "Microsoft Hyper-V guest support" | |
| config HYPERV | |
| bool "Microsoft Hyper-V core hypervisor support" | |
| depends on (X86 && X86_LOCAL_APIC && HYPERVISOR_GUEST) || ARM64 | |
| select PARAVIRT | |
| select X86_HV_CALLBACK_VECTOR if X86 | |
| select OF_EARLY_FLATTREE if OF | |
| select IRQ_MSI_LIB if X86 | |
| help | |
| Select this option to run Linux as a Hyper-V client operating | |
| system. | |
| config HYPERV_VTL_MODE | |
| bool "Enable Linux to boot in VTL context" | |
| depends on (X86_64 && HAVE_STATIC_CALL) || ARM64 | |
| depends on HYPERV | |
| depends on SMP | |
| default n | |
| help | |
| Virtual Secure Mode (VSM) is a set of hypervisor capabilities and | |
| enlightenments offered to host and guest partitions which enables | |
| the creation and management of new security boundaries within | |
| operating system software. | |
| VSM achieves and maintains isolation through Virtual Trust Levels | |
| (VTLs). Virtual Trust Levels are hierarchical, with higher levels | |
| being more privileged than lower levels. VTL0 is the least privileged | |
| level, and currently only other level supported is VTL2. | |
| Select this option to build a Linux kernel to run at a VTL other than | |
| the normal VTL0, which currently is only VTL2. This option | |
| initializes the kernel to run in VTL2, and adds the ability to boot | |
| secondary CPUs directly into 64-bit context as required for VTLs other | |
| than 0. A kernel built with this option must run at VTL2, and will | |
| not run as a normal guest. | |
| If unsure, say N | |
| config HYPERV_TIMER | |
| def_bool HYPERV && X86 | |
| config HYPERV_UTILS | |
| tristate "Microsoft Hyper-V Utilities driver" | |
| depends on HYPERV_VMBUS && CONNECTOR && NLS | |
| depends on PTP_1588_CLOCK_OPTIONAL | |
| help | |
| Select this option to enable the Hyper-V Utilities. | |
| config HYPERV_BALLOON | |
| tristate "Microsoft Hyper-V Balloon driver" | |
| depends on HYPERV_VMBUS | |
| select PAGE_REPORTING | |
| help | |
| Select this option to enable Hyper-V Balloon driver. | |
| config HYPERV_VMBUS | |
| tristate "Microsoft Hyper-V VMBus driver" | |
| depends on HYPERV | |
| default HYPERV | |
| select SYSFB if EFI && !HYPERV_VTL_MODE | |
| help | |
| Select this option to enable Hyper-V Vmbus driver. | |
| config MSHV_ROOT | |
| tristate "Microsoft Hyper-V root partition support" | |
| depends on HYPERV && (X86_64 || ARM64) | |
| depends on !HYPERV_VTL_MODE | |
| # The hypervisor interface operates on 4k pages. Enforcing it here | |
| # simplifies many assumptions in the root partition code. | |
| # e.g. When withdrawing memory, the hypervisor gives back 4k pages in | |
| # no particular order, making it impossible to reassemble larger pages | |
| depends on PAGE_SIZE_4KB | |
| depends on HYPERV_VMBUS if HYPERV_VMBUS | |
| select EVENTFD | |
| select VIRT_XFER_TO_GUEST_WORK | |
| select HMM_MIRROR | |
| select MMU_NOTIFIER | |
| default n | |
| help | |
| Select this option to enable support for booting and running as root | |
| partition on Microsoft Hyper-V. | |
| If unsure, say N. | |
| config MSHV_VTL | |
| tristate "Microsoft Hyper-V VTL driver" | |
| depends on X86_64 && HYPERV_VTL_MODE | |
| depends on HYPERV_VMBUS | |
| # Mapping VTL0 memory to a userspace process in VTL2 is supported in OpenHCL. | |
| # VTL2 for OpenHCL makes use of Huge Pages to improve performance on VMs, | |
| # specially with large memory requirements. | |
| depends on TRANSPARENT_HUGEPAGE | |
| # MTRRs are controlled by VTL0, and are not specific to individual VTLs. | |
| # Therefore, do not attempt to access or modify MTRRs here. | |
| depends on !MTRR | |
| select CPUMASK_OFFSTACK | |
| select VIRT_XFER_TO_GUEST_WORK | |
| default n | |
| help | |
| Select this option to enable Hyper-V VTL driver support. | |
| This driver provides interfaces for Virtual Machine Manager (VMM) running in VTL2 | |
| userspace to create VTLs and partitions, setup and manage VTL0 memory and | |
| allow userspace to make direct hypercalls. This also allows to map VTL0's address | |
| space to a usermode process in VTL2 and supports getting new VMBus messages and channel | |
| events in VTL2. | |
| If unsure, say N. | |
| endmenu |