On 5/7/2025 4:21 AM, Naman Jain wrote:



[...]

<snip>

+        return -EINVAL;
+    if (copy_from_user(payload, (void __user *)message.payload_ptr,
+               message.payload_size))
+        return -EFAULT;
+
+    return hv_post_message((union

This function definition is in separate file which can be build as independent module, this will cause
problem while linking . Try building with CONFIG_HYPERV=m and check.

- Saurabh

Thanks for reviewing Saurabh. As CONFIG_HYPERV can be set to 'm'
and CONFIG_MSHV_VTL depends on it, changing CONFIG_MSHV_VTL to tristate
and a few tweaks in Makefile will fix this issue. This will ensure that
mshv_vtl is also built as a module when hyperv is built as a module.

I'll take care of this in next version.

Let me ask for a clarification. How would the system boot if
CONFIG_HYPERV is set to m? The arch parts are going to be still
compiled-in, correct? Otherwise I don't see how that would
initialize.

I am thinking who would load Hyper-V modules on the system
that requires Hyper-V here. It is understandable that
distro's build Hyper-V as a module. That way, they don't have to load
anything when there is no Hyper-V. Here, it is Hyper-V in and out, what
do we need to fix?


here is the diff for reference:
diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
index 57dcfcb69b88..c7f21b483377 100644
--- a/drivers/hv/Kconfig
+++ b/drivers/hv/Kconfig
@@ -73,7 +73,7 @@ config MSHV_ROOT
           If unsure, say N.

  config MSHV_VTL
-       bool "Microsoft Hyper-V VTL driver"
+       tristate "Microsoft Hyper-V VTL driver"
         depends on HYPERV && X86_64
         depends on TRANSPARENT_HUGEPAGE
         depends on OF
diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile
index 5e785dae08cc..c53a0df746b7 100644
--- a/drivers/hv/Makefile
+++ b/drivers/hv/Makefile
@@ -15,9 +15,11 @@ hv_vmbus-$(CONFIG_HYPERV_TESTING)    += hv_debugfs.o
  hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_utils_transport.o
  mshv_root-y := mshv_root_main.o mshv_synic.o mshv_eventfd.o mshv_irq.o \
                mshv_root_hv_call.o mshv_portid_table.o
+mshv_vtl-y := mshv_vtl_main.o

  # Code that must be built-in
  obj-$(subst m,y,$(CONFIG_HYPERV)) += hv_common.o
-obj-$(subst m,y,$(CONFIG_MSHV_ROOT)) += hv_proc.o mshv_common.o
-
-mshv_vtl-y := mshv_vtl_main.o mshv_common.o
+obj-$(subst m,y,$(CONFIG_MSHV_ROOT)) += hv_proc.o
+ifneq ($(CONFIG_MSHV_ROOT) $(CONFIG_MSHV_VTL),)
+    obj-y += mshv_common.o
+endif

Regards,
Naman

--
Thank you,
Roman


Reply via email to