On Tue, Jun 18, 2024 at 12:33 PM Qiang Yu <yuq825@xxxxxxxxx> wrote: > > 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()? > This doesn't work on my side because depmod generates modules.dep by symbol lookup instead of modinfo section. So softdep may be our only choice to add module dependency manually. I can accept the softdep first, then make PM optional later. > 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");