Kconfig 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # SPDX-License-Identifier: GPL-2.0
  2. menu "Microsoft Hyper-V guest support"
  3. config HYPERV
  4. bool "Microsoft Hyper-V core hypervisor support"
  5. depends on (X86 && X86_LOCAL_APIC && HYPERVISOR_GUEST) \
  6. || (ARM64 && !CPU_BIG_ENDIAN)
  7. select PARAVIRT
  8. select X86_HV_CALLBACK_VECTOR if X86
  9. select OF_EARLY_FLATTREE if OF
  10. select SYSFB if EFI && !HYPERV_VTL_MODE
  11. select IRQ_MSI_LIB if X86
  12. help
  13. Select this option to run Linux as a Hyper-V client operating
  14. system.
  15. config HYPERV_VTL_MODE
  16. bool "Enable Linux to boot in VTL context"
  17. depends on (X86_64 && HAVE_STATIC_CALL) || ARM64
  18. depends on HYPERV
  19. depends on SMP
  20. default n
  21. help
  22. Virtual Secure Mode (VSM) is a set of hypervisor capabilities and
  23. enlightenments offered to host and guest partitions which enables
  24. the creation and management of new security boundaries within
  25. operating system software.
  26. VSM achieves and maintains isolation through Virtual Trust Levels
  27. (VTLs). Virtual Trust Levels are hierarchical, with higher levels
  28. being more privileged than lower levels. VTL0 is the least privileged
  29. level, and currently only other level supported is VTL2.
  30. Select this option to build a Linux kernel to run at a VTL other than
  31. the normal VTL0, which currently is only VTL2. This option
  32. initializes the kernel to run in VTL2, and adds the ability to boot
  33. secondary CPUs directly into 64-bit context as required for VTLs other
  34. than 0. A kernel built with this option must run at VTL2, and will
  35. not run as a normal guest.
  36. If unsure, say N
  37. config HYPERV_TIMER
  38. def_bool HYPERV && X86
  39. config HYPERV_UTILS
  40. tristate "Microsoft Hyper-V Utilities driver"
  41. depends on HYPERV_VMBUS && CONNECTOR && NLS
  42. depends on PTP_1588_CLOCK_OPTIONAL
  43. help
  44. Select this option to enable the Hyper-V Utilities.
  45. config HYPERV_BALLOON
  46. tristate "Microsoft Hyper-V Balloon driver"
  47. depends on HYPERV_VMBUS
  48. select PAGE_REPORTING
  49. help
  50. Select this option to enable Hyper-V Balloon driver.
  51. config HYPERV_VMBUS
  52. tristate "Microsoft Hyper-V VMBus driver"
  53. depends on HYPERV
  54. default HYPERV
  55. help
  56. Select this option to enable Hyper-V Vmbus driver.
  57. config MSHV_ROOT
  58. tristate "Microsoft Hyper-V root partition support"
  59. depends on HYPERV && (X86_64 || ARM64)
  60. depends on !HYPERV_VTL_MODE
  61. # The hypervisor interface operates on 4k pages. Enforcing it here
  62. # simplifies many assumptions in the root partition code.
  63. # e.g. When withdrawing memory, the hypervisor gives back 4k pages in
  64. # no particular order, making it impossible to reassemble larger pages
  65. depends on PAGE_SIZE_4KB
  66. select EVENTFD
  67. select VIRT_XFER_TO_GUEST_WORK
  68. select HMM_MIRROR
  69. select MMU_NOTIFIER
  70. default n
  71. help
  72. Select this option to enable support for booting and running as root
  73. partition on Microsoft Hyper-V.
  74. If unsure, say N.
  75. config MSHV_VTL
  76. tristate "Microsoft Hyper-V VTL driver"
  77. depends on X86_64 && HYPERV_VTL_MODE
  78. depends on HYPERV_VMBUS
  79. # Mapping VTL0 memory to a userspace process in VTL2 is supported in OpenHCL.
  80. # VTL2 for OpenHCL makes use of Huge Pages to improve performance on VMs,
  81. # specially with large memory requirements.
  82. depends on TRANSPARENT_HUGEPAGE
  83. # MTRRs are controlled by VTL0, and are not specific to individual VTLs.
  84. # Therefore, do not attempt to access or modify MTRRs here.
  85. depends on !MTRR
  86. select CPUMASK_OFFSTACK
  87. select VIRT_XFER_TO_GUEST_WORK
  88. default n
  89. help
  90. Select this option to enable Hyper-V VTL driver support.
  91. This driver provides interfaces for Virtual Machine Manager (VMM) running in VTL2
  92. userspace to create VTLs and partitions, setup and manage VTL0 memory and
  93. allow userspace to make direct hypercalls. This also allows to map VTL0's address
  94. space to a usermode process in VTL2 and supports getting new VMBus messages and channel
  95. events in VTL2.
  96. If unsure, say N.
  97. endmenu