From: Arnd Bergmann <[email protected]> Sent: Thursday, May 21, 2026 1:16 PM > > On Thu, May 21, 2026, at 18:49, Michael Kelley wrote: > > > > 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]> > > Looks good to me, thanks for fixing it! > > Acked-by: Arnd Bergmann <[email protected]> > > > /* > > * VMBus owns SIMP/SIEFP/SCONTROL when it is active. > > * See hv_hyp_synic_enable_regs() for that initialization. > > */ > > - bool vmbus_active = hv_vmbus_exists(); > > +#if IS_ENABLED(CONFIG_HYPERV_VMBUS) > > + vmbus_active = hv_vmbus_exists(); > > +#endif > > I would usually write this as > > if (IS_ENABLED(CONFIG_HYPERV_VMBUS)) > vmbus_active = hv_vmbus_exists(); > > for readability, since the hv_vmbus_exists() declarations is still > visible and the IS_ENABLED() check avoids the link failure. >
I thought about doing that, but wasn't sure it would work. There are nuances of #ifdef vs. #if IS_ENABLED() vs. if (IS_ENABLED()) that I haven't learned. :-( I'll wait a few days to see if any comments come in from Jork Jork or other MSFT folks, and then spin a v2 with your change so the cleaner version is what goes upstream. Thanks! Michael

