On 10/27/21 14:55, Jani Nikula wrote: [snip] >> Why the dependency has to be in a user-visible symbol? What could be the >> problem with having something like: >> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >> index cea777ae7fb9..f80b404946ca 100644 >> --- a/drivers/gpu/drm/Kconfig >> +++ b/drivers/gpu/drm/Kconfig >> @@ -82,6 +82,7 @@ config DRM_DEBUG_SELFTEST >> config DRM_KMS_HELPER >> tristate >> depends on DRM >> + depends on (DRM_FBDEV_EMULATION && FB) || !DRM_FBDEV_EMULATION > > To me, this seems like the right solution. Depend on FB if > DRM_FBDEV_EMULATION is enabled. That's exactly what the relationship is. > The problem as Arnd explained is that then this relationship will have to be expressed in all the Kconfig symbols that select DRM_KMS_HELPER. Otherwise the symbol will happily select the wrong state and even when a warning is printed by Kconfig, it will just set an invalid configuration. For example with CONFIG_FB=m (that led to the linker errors if the symbol is also not CONFIG_DRM_KMS_HELPER=m) and CONFIG_SIMPLEDRM=y (that selects CONFIG_DRM_KMS_HELPER), this would cause the following unmet dependencies: $ make prepare modules_prepare WARNING: unmet direct dependencies detected for DRM_KMS_HELPER Depends on [m]: HAS_IOMEM [=y] && DRM [=y] && (DRM_FBDEV_EMULATION [=y] && FB [=m] || !DRM_FBDEV_EMULATION [=y]) Selected by [y]: - DRM_SIMPLEDRM [=y] && HAS_IOMEM [=y] && DRM [=y] Selected by [m]: - DRM_I915 [=m] && HAS_IOMEM [=y] && DRM [=y] && X86 [=y] && PCI [=y] - DRM_VIRTIO_GPU [=m] && HAS_IOMEM [=y] && DRM [=y] && VIRTIO_MENU [=y] && MMU [=y] so CONFIG_DRM_KMS_HELPER will wrongly set to =y which will cause the issue. Best regards, -- Javier Martinez Canillas Linux Engineering Red Hat