RE: [PATCH 09/11] Drivers: hv: mshv_vtl: Let userspace do VSM configuration

Michael Kelley
2026-04-01T16:58:38Z

From: Naman Jain <namjain@linux.microsoft.com> Sent: Monday, March 16, 2026 5:13 AM
>
> The kernel currently sets the VSM configuration register, thereby
> imposing certain VSM configuration on the userspace (OpenVMM).
>
> The userspace (OpenVMM) has the capability to configure this register,
> and it is already doing it using the generic hypercall interface.
> The configuration can vary based on the use case or architectures, so
> let userspace take care of configuring it and remove this logic in the
> kernel driver.
>
> Signed-off-by: Roman Kisel <romank@linux.microsoft.com>
> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
> ---
> drivers/hv/mshv_vtl_main.c | 29 -----------------------------
> 1 file changed, 29 deletions(-)
>
> diff --git a/drivers/hv/mshv_vtl_main.c b/drivers/hv/mshv_vtl_main.c
> index c79d24317b8e..4c9ae65ad3e8 100644
> --- a/drivers/hv/mshv_vtl_main.c
> +++ b/drivers/hv/mshv_vtl_main.c
> @@ -222,30 +222,6 @@ static int mshv_vtl_get_vsm_regs(void)
> return ret;
> }
>
> -static int mshv_vtl_configure_vsm_partition(struct device *dev)
> -{
> - union hv_register_vsm_partition_config config;
> - struct hv_register_assoc reg_assoc;
> -
> - config.as_uint64 = 0;
> - config.default_vtl_protection_mask = HV_MAP_GPA_PERMISSIONS_MASK;
> - config.enable_vtl_protection = 1;
> - config.zero_memory_on_reset = 1;
> - config.intercept_vp_startup = 1;
> - config.intercept_cpuid_unimplemented = 1;
> -
> - if (mshv_vsm_capabilities.intercept_page_available) {
> - dev_dbg(dev, "using intercept page\n");
> - config.intercept_page = 1;
> - }
> -
> - reg_assoc.name = HV_REGISTER_VSM_PARTITION_CONFIG;
> - reg_assoc.value.reg64 = config.as_uint64;
> -
> - return hv_call_set_vp_registers(HV_VP_INDEX_SELF, HV_PARTITION_ID_SELF,
> - 1, input_vtl_zero, &reg_assoc);
> -}
> -
> static void mshv_vtl_vmbus_isr(void)
> {
> struct hv_per_cpu_context *per_cpu;
> @@ -1168,11 +1144,6 @@ static int __init mshv_vtl_init(void)
> ret = -ENODEV;
> goto free_dev;
> }
> - if (mshv_vtl_configure_vsm_partition(dev)) {
> - dev_emerg(dev, "VSM configuration failed !!\n");
> - ret = -ENODEV;
> - goto free_dev;
> - }
>
> mshv_vtl_return_call_init(mshv_vsm_page_offsets.vtl_return_offset);
> ret = hv_vtl_setup_synic();
> --
> 2.43.0
>

Reviewed-by: Michael Kelley <mhklinux@outlook.com>