I see the problem that initramfs need to build a module dependency chain, but lima does not call any symbol from simpleondemand governor module. softdep module seems to be optional while our dependency is hard one, can we just add MODULE_INFO(depends, _depends), or create a new macro called MODULE_DEPENDS()? On Tue, Jun 18, 2024 at 4:22 AM Dragan Simic <dsimic@xxxxxxxxxxx> wrote: > > Lima DRM driver uses devfreq to perform DVFS, while using simple_ondemand > devfreq governor by default. This causes driver initialization to fail on > boot when simple_ondemand governor isn't built into the kernel statically, > as a result of the missing module dependency and, consequently, the required > governor module not being included in the initial ramdisk. Thus, let's mark > simple_ondemand governor as a softdep for Lima, to have its kernel module > included in the initial ramdisk. > > This is a rather longstanding issue that has forced distributions to build > devfreq governors statically into their kernels, [1][2] or may have forced > some users to introduce unnecessary workarounds. > > Having simple_ondemand marked as a softdep for Lima may not resolve this > issue for all Linux distributions. In particular, it will remain unresolved > for the distributions whose utilities for the initial ramdisk generation do > not handle the available softdep information [3] properly yet. However, some > Linux distributions already handle softdeps properly while generating their > initial ramdisks, [4] and this is a prerequisite step in the right direction > for the distributions that don't handle them properly yet. > > [1] https://gitlab.manjaro.org/manjaro-arm/packages/core/linux-pinephone/-/blob/6.7-megi/config?ref_type=heads#L5749 > [2] https://gitlab.com/postmarketOS/pmaports/-/blob/7f64e287e7732c9eaa029653e73ca3d4ba1c8598/main/linux-postmarketos-allwinner/config-postmarketos-allwinner.aarch64#L4654 > [3] https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/commit/?id=49d8e0b59052999de577ab732b719cfbeb89504d > [4] https://github.com/archlinux/mkinitcpio/commit/97ac4d37aae084a050be512f6d8f4489054668ad > > Cc: Philip Muller <philm@xxxxxxxxxxx> > Cc: Oliver Smith <ollieparanoid@xxxxxxxxxxxxxxxx> > Cc: Daniel Smith <danct12@xxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 1996970773a3 ("drm/lima: Add optional devfreq and cooling device support") > Signed-off-by: Dragan Simic <dsimic@xxxxxxxxxxx> > --- > drivers/gpu/drm/lima/lima_drv.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c > index 739c865b556f..10bce18b7c31 100644 > --- a/drivers/gpu/drm/lima/lima_drv.c > +++ b/drivers/gpu/drm/lima/lima_drv.c > @@ -501,3 +501,4 @@ module_platform_driver(lima_platform_driver); > MODULE_AUTHOR("Lima Project Developers"); > MODULE_DESCRIPTION("Lima DRM Driver"); > MODULE_LICENSE("GPL v2"); > +MODULE_SOFTDEP("pre: governor_simpleondemand");