When CONFIG_DRM_KMS_HELPER=m and CONFIG_DRM_PANEL_EDP=y, there is a build error in gpu/drm/panel/panel-edp.o:
arm-linux-gnueabi-ld: drivers/gpu/drm/panel/panel-edp.o: in function `panel_edp_probe': panel-edp.c:(.text+0xf38): undefined reference to `drm_panel_dp_aux_backlight'
Fix this by limiting DRM_PANEL_DEP by the value of the DRM_KMS_HELPER symbol.
Fixes: 5f04e7ce392d ("drm/panel-edp: Split eDP panels out of panel-simple") Signed-off-by: Randy Dunlap rdunlap@infradead.org Reported-by: kernel test robot lkp@intel.com Cc: Arnd Bergmann arnd@arndb.de Cc: Daniel Vetter daniel.vetter@ffwll.ch Cc: Javier Martinez Canillas javierm@redhat.com Cc: Sam Ravnborg sam@ravnborg.org Cc: Douglas Anderson dianders@chromium.org Cc: Linus Walleij linus.walleij@linaro.org Cc: Thierry Reding thierry.reding@gmail.com Cc: dri-devel@lists.freedesktop.org --- drivers/gpu/drm/panel/Kconfig | 1 + 1 file changed, 1 insertion(+)
--- linux-next-20211117.orig/drivers/gpu/drm/panel/Kconfig +++ linux-next-20211117/drivers/gpu/drm/panel/Kconfig @@ -104,6 +104,7 @@ config DRM_PANEL_EDP depends on OF depends on BACKLIGHT_CLASS_DEVICE depends on PM + depends on DRM_KMS_HELPER select VIDEOMODE_HELPERS select DRM_DP_AUX_BUS help
On Wed, Nov 17, 2021 at 7:27 AM Randy Dunlap rdunlap@infradead.org wrote:
When CONFIG_DRM_KMS_HELPER=m and CONFIG_DRM_PANEL_EDP=y, there is a build error in gpu/drm/panel/panel-edp.o:
arm-linux-gnueabi-ld: drivers/gpu/drm/panel/panel-edp.o: in function `panel_edp_probe': panel-edp.c:(.text+0xf38): undefined reference to `drm_panel_dp_aux_backlight'
Fix this by limiting DRM_PANEL_DEP by the value of the DRM_KMS_HELPER symbol.
I think the analysis is correct, but this is not the correct fix since DRM_KMS_HELPER is not user-selectable. (Almost) all other drivers that rely on DRM_KMS_HELPER use 'select' for this, and mixing the two risks running into circular dependencies.
I see that there are already some 'depends on DRM_KMS_HELPER' in bridge and panel drivers, so it's possible that we have to fix them all at the same to do this right. I ran into another problem like this the other day and I'm currently testing with the patch below, but I have not posted that yet since I am not fully convinced that this is the correct fix either.
Arnd --- commit a836092fedaac66af03ea9ed7cb13214fd2ab8a2 Author: Arnd Bergmann arnd@arndb.de Date: Mon Nov 15 16:54:04 2021 +0100
drm/mipi-dbi: select CONFIG_DRM_KMS_HELPER
The driver fails to build when the KMS helpers are disabled:
ld.lld: error: undefined symbol: drm_gem_fb_get_obj >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_buf_copy) in archive drivers/built-in.a >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_fb_dirty) in archive drivers/built-in.a
ld.lld: error: undefined symbol: drm_gem_fb_begin_cpu_access >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_buf_copy) in archive drivers/built-in.a
ld.lld: error: undefined symbol: drm_fb_swab >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_buf_copy) in archive drivers/built-in.a
ld.lld: error: undefined symbol: drm_fb_xrgb8888_to_rgb565 >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_buf_copy) in archive drivers/built-in.a
ld.lld: error: undefined symbol: drm_fb_memcpy >>> referenced by drm_mipi_dbi.c >>> gpu/drm/drm_mipi_dbi.o:(mipi_dbi_buf_copy) in archive drivers/built-in.a
This is fairly hard to hit in randconfig drivers, but it eventually did trigger for me in a configuration where all other DRM drivers are loadable modules, but DRM_PANEL_WIDECHIPS_WS2401 was built-in.
Signed-off-by: Arnd Bergmann arnd@arndb.de
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 0039df26854b..a03c2761c5f9 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -29,6 +29,7 @@ menuconfig DRM
config DRM_MIPI_DBI tristate + select DRM_KMS_HELPER depends on DRM
config DRM_MIPI_DSI diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig index 431b6e12a81f..17a8d603e7d8 100644 --- a/drivers/gpu/drm/bridge/Kconfig +++ b/drivers/gpu/drm/bridge/Kconfig @@ -8,7 +8,6 @@ config DRM_BRIDGE config DRM_PANEL_BRIDGE def_bool y depends on DRM_BRIDGE - depends on DRM_KMS_HELPER select DRM_PANEL help DRM bridge wrapper of DRM panels diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index cfc8d644cedf..40ec20f3552d 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -140,9 +140,8 @@ config DRM_PANEL_ILITEK_IL9322 config DRM_PANEL_ILITEK_ILI9341 tristate "Ilitek ILI9341 240x320 QVGA panels" depends on OF && SPI - depends on DRM_KMS_HELPER - depends on DRM_KMS_CMA_HELPER depends on BACKLIGHT_CLASS_DEVICE + select DRM_KMS_CMA_HELPER select DRM_MIPI_DBI help Say Y here if you want to enable support for Ilitek IL9341
On 11/16/21 11:58 PM, Arnd Bergmann wrote:
On Wed, Nov 17, 2021 at 7:27 AM Randy Dunlap rdunlap@infradead.org wrote:
When CONFIG_DRM_KMS_HELPER=m and CONFIG_DRM_PANEL_EDP=y, there is a build error in gpu/drm/panel/panel-edp.o:
arm-linux-gnueabi-ld: drivers/gpu/drm/panel/panel-edp.o: in function `panel_edp_probe': panel-edp.c:(.text+0xf38): undefined reference to `drm_panel_dp_aux_backlight'
Fix this by limiting DRM_PANEL_DEP by the value of the DRM_KMS_HELPER symbol.
I think the analysis is correct, but this is not the correct fix since DRM_KMS_HELPER is not user-selectable. (Almost) all other drivers that rely on DRM_KMS_HELPER use 'select' for this, and mixing the two risks running into circular dependencies.
Oops. Thanks for catching that.
My first (local) version of the patch used select, but that got me into kconfig circular dependency chain land (ugly). Maybe your all-at-once patch can take care of that problem.
I see that there are already some 'depends on DRM_KMS_HELPER' in bridge and panel drivers, so it's possible that we have to fix them all at the same to do this right. I ran into another problem like this the other day and I'm currently testing with the patch below, but I have not posted that yet since I am not fully convinced that this is the correct fix either.
I'll test some with it also.
thanks.
dri-devel@lists.freedesktop.org