On Tue, May 26, 2026 at 07:13:04AM -0700, Michael Kelley wrote: > From: Michael Kelley <[email protected]> > > When the VMBus driver is not part of the kernel (CONFIG_HYPERV_VMBUS=n), > the MSHV root driver fails to link: > > ERROR: modpost: "hv_vmbus_exists" [drivers/hv/mshv_root.ko] undefined! > > Fix this while meeting these requirements: > * It must be possible to include the MSHV root driver without the > VMBus driver. In such case, the MSHV root driver can be built-in > to the kernel image, or it can be built as a separate module. > * If both the MSHV root driver and the VMBus driver are present, the > MSHV root driver and VMBus driver can both be built-in, or they can > both be separate modules. Or the MSHV root driver can be a module > while the VMBus driver can be built-in, but the reverse is > disallowed. Regardless of the build choices, the VMBus driver must > be loaded before the MSHV driver in order for the SynIC to be > managed properly (see comments in the MSHV SynIC code). > > The fix has two parts: > * Add a Kconfig entry for MSHV_ROOT to depend on HYPERV_VMBUS if > HYPERV_VMBUS is present. The entry disallows MSHV_ROOT being > built-in when HYPERV_VMBUS is a module, but without requiring that > HYPERV_VMBUS be built. > * Add a stub implementation of hv_vmbus_exists() for when the > VMBus driver is not present so that the MSHV root driver has > no module dependency on VMBus. When the VMBus driver *is* > present, the module dependency ensures that the VMBus driver > loads first when both are built as modules. > > Existing code ensures that the VMBus driver loads first if it is > built-in. The VMBus driver uses subsys_initcall(), which is > initcall level 4. The MSHV root driver uses module_init(), which > becomes device_init() when built-in, and device_init() is > initcall level 6. > > Reported-by: Arnd Bergmann <[email protected]> > Closes: https://lore.kernel.org/all/[email protected]/ > Signed-off-by: Michael Kelley <[email protected]> > Acked-by: Arnd Bergmann <[email protected]> > Reviewed-by: Jork Loeser <[email protected]>
Applied. Thanks everyone.

