Introduce a new mshv_vtl driver to provide an interface for Virtual Machine Monitor like OpenVMM and its use as OpenHCL paravisor to control VTL0 (Virtual trust Level). Expose devices and support IOCTLs for features like VTL creation, VTL0 memory management, context switch, making hypercalls, mapping VTL0 address space to VTL2 userspace, getting new VMBus messages and channel events in VTL2 etc.
OpenVMM : https://openvmm.dev/guide/ Changes since v1: https://lore.kernel.org/all/20250506084937.624680-1-namj...@linux.microsoft.com/ Addressed Saurabh's comments: * Split the patch in 2 to keep export symbols separate * Make MSHV_VTL module tristate and fixed compilation warning that would come when HYPERV is compiled as a module. * Remove the use of ref_count * Split functionality of mshv_vtl_ioctl_get_set_regs to different functions mshv_vtl_ioctl_(get|set)_regs as it actually make things simpler * Fixed use of copy_from_user in atomic context in mshv_vtl_hvcall_call. Added ToDo comment for info. * Added extra code to free memory for vtl in error scenarios in mshv_ioctl_create_vtl() Addressed Alok's comments regarding: * Additional conditional checks * corrected typo in HV_X64_REGISTER_MSR_MTRR_PHYS_MASKB case * empty lines before return statement * Added/edited comments, variable names, structure field names as suggested to improve documentation - no functional change here. Naman Jain (2): Drivers: hv: Export some symbols for mshv_vtl Drivers: hv: Introduce mshv_vtl driver drivers/hv/Kconfig | 21 + drivers/hv/Makefile | 7 +- drivers/hv/hv.c | 2 + drivers/hv/hyperv_vmbus.h | 1 + drivers/hv/mshv_vtl.h | 52 + drivers/hv/mshv_vtl_main.c | 1783 +++++++++++++++++++++++++++++++++++ drivers/hv/vmbus_drv.c | 3 +- include/hyperv/hvgdk_mini.h | 81 ++ include/hyperv/hvhdk.h | 1 + include/uapi/linux/mshv.h | 82 ++ 10 files changed, 2031 insertions(+), 2 deletions(-) create mode 100644 drivers/hv/mshv_vtl.h create mode 100644 drivers/hv/mshv_vtl_main.c base-commit: ed61cb3d78d585209ec775933078e268544fe9a4 -- 2.34.1