linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/panel-edp: modify Kconfig to prevent build error
@ 2021-11-17  6:27 Randy Dunlap
  2021-11-17  7:58 ` Arnd Bergmann
  0 siblings, 1 reply; 3+ messages in thread
From: Randy Dunlap @ 2021-11-17  6:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Randy Dunlap, kernel test robot, Arnd Bergmann, Daniel Vetter,
	Javier Martinez Canillas, Sam Ravnborg, Douglas Anderson,
	Linus Walleij, Thierry Reding, dri-devel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/panel-edp: modify Kconfig to prevent build error
  2021-11-17  6:27 [PATCH] drm/panel-edp: modify Kconfig to prevent build error Randy Dunlap
@ 2021-11-17  7:58 ` Arnd Bergmann
  2021-11-17 20:04   ` Randy Dunlap
  0 siblings, 1 reply; 3+ messages in thread
From: Arnd Bergmann @ 2021-11-17  7:58 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Linux Kernel Mailing List, kernel test robot, Arnd Bergmann,
	Daniel Vetter, Javier Martinez Canillas, Sam Ravnborg,
	Douglas Anderson, Linus Walleij, Thierry Reding, dri-devel

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/panel-edp: modify Kconfig to prevent build error
  2021-11-17  7:58 ` Arnd Bergmann
@ 2021-11-17 20:04   ` Randy Dunlap
  0 siblings, 0 replies; 3+ messages in thread
From: Randy Dunlap @ 2021-11-17 20:04 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Linux Kernel Mailing List, kernel test robot, Daniel Vetter,
	Javier Martinez Canillas, Sam Ravnborg, Douglas Anderson,
	Linus Walleij, Thierry Reding, dri-devel

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.

-- 
~Randy

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-17 20:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-17  6:27 [PATCH] drm/panel-edp: modify Kconfig to prevent build error Randy Dunlap
2021-11-17  7:58 ` Arnd Bergmann
2021-11-17 20:04   ` Randy Dunlap

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).