2020-05-18 20:19:29

by Daniel G

[permalink] [raw]
Subject: [PATCH] drm: rcar-du: Fix build error

Select DRM_KMS_HELPER dependency.

Build error when DRM_KMS_HELPER is not selected:

drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'

Signed-off-by: Daniel Gomez <[email protected]>
---
drivers/gpu/drm/rcar-du/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig
index 0919f1f159a4..f65d1489dc50 100644
--- a/drivers/gpu/drm/rcar-du/Kconfig
+++ b/drivers/gpu/drm/rcar-du/Kconfig
@@ -31,6 +31,7 @@ config DRM_RCAR_DW_HDMI
config DRM_RCAR_LVDS
tristate "R-Car DU LVDS Encoder Support"
depends on DRM && DRM_BRIDGE && OF
+ select DRM_KMS_HELPER
select DRM_PANEL
select OF_FLATTREE
select OF_OVERLAY
--
2.26.2


2020-05-19 20:28:14

by Emil Velikov

[permalink] [raw]
Subject: Re: [PATCH] drm: rcar-du: Fix build error

On Tue, 19 May 2020 at 08:01, Daniel Gomez <[email protected]> wrote:
>
> Select DRM_KMS_HELPER dependency.
>
> Build error when DRM_KMS_HELPER is not selected:
>
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
>
> Signed-off-by: Daniel Gomez <[email protected]>
Nicely spotted.
AFAICT the only way this ever worked is if people had
DRM_FBDEV_EMULATION, which is unset in your case.

Cc: <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>

I suspect Laurent will pick this in due time.
-Emil

2020-05-22 09:46:11

by Kieran Bingham

[permalink] [raw]
Subject: Re: [PATCH] drm: rcar-du: Fix build error

Hi Daniel,

On 18/05/2020 21:16, Daniel Gomez wrote:
> Select DRM_KMS_HELPER dependency.
>
> Build error when DRM_KMS_HELPER is not selected:
>
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
>

Looking at the files in rcar_du that utilise drm_atomic_helpers...

git grep -l drm_atomic_helper_ drivers/gpu/drm/rcar-du/
drivers/gpu/drm/rcar-du/rcar_du_crtc.c
drivers/gpu/drm/rcar-du/rcar_du_kms.c
drivers/gpu/drm/rcar-du/rcar_du_plane.c
drivers/gpu/drm/rcar-du/rcar_du_vsp.c
drivers/gpu/drm/rcar-du/rcar_du_writeback.c
drivers/gpu/drm/rcar-du/rcar_lvds.c

of those, these are configurable:

rcar_du_vsp.c # DRM_RCAR_VSP
rcar_du_writeback.c # DRM_RCAR_WRITEBACK
rcar_lvds.c # DRM_RCAR_LVDS

But VSP and WRITEBACK are already implicitly dependant upon DRM_RCAR_DU
because they get built into the DU module.

So indeed, only the RCAR_LVDS is a separate module, using those helpers,
so I think a select is a reasonable fix.

I would also ask whether DRM_RCAR_LVDS should depend upon DRM_RCAR_DU
though as well.

There is no linkage requirement, as it's a standalone bridge driver from
what I can see, but I don't think it serves much purpose without the DU?

Anyway, even if it's just for compile testing maybe, the select here
should be fine.

Reviewed-by: Kieran Bingham <[email protected]>

> Signed-off-by: Daniel Gomez <[email protected]>
> ---
> drivers/gpu/drm/rcar-du/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig
> index 0919f1f159a4..f65d1489dc50 100644
> --- a/drivers/gpu/drm/rcar-du/Kconfig
> +++ b/drivers/gpu/drm/rcar-du/Kconfig
> @@ -31,6 +31,7 @@ config DRM_RCAR_DW_HDMI
> config DRM_RCAR_LVDS
> tristate "R-Car DU LVDS Encoder Support"
> depends on DRM && DRM_BRIDGE && OF
> + select DRM_KMS_HELPER
> select DRM_PANEL
> select OF_FLATTREE
> select OF_OVERLAY
>

2020-05-22 10:40:03

by Daniel G

[permalink] [raw]
Subject: Re: [PATCH] drm: rcar-du: Fix build error

Hi Kieran and Emil,

On Fri, 22 May 2020 at 11:43, Kieran Bingham
<[email protected]> wrote:
>
> Hi Daniel,
>
> On 18/05/2020 21:16, Daniel Gomez wrote:
> > Select DRM_KMS_HELPER dependency.
> >
> > Build error when DRM_KMS_HELPER is not selected:
> >
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
> >
>
> Looking at the files in rcar_du that utilise drm_atomic_helpers...
>
> git grep -l drm_atomic_helper_ drivers/gpu/drm/rcar-du/
> drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> drivers/gpu/drm/rcar-du/rcar_du_kms.c
> drivers/gpu/drm/rcar-du/rcar_du_plane.c
> drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> drivers/gpu/drm/rcar-du/rcar_du_writeback.c
> drivers/gpu/drm/rcar-du/rcar_lvds.c
>
> of those, these are configurable:
>
> rcar_du_vsp.c # DRM_RCAR_VSP
> rcar_du_writeback.c # DRM_RCAR_WRITEBACK
> rcar_lvds.c # DRM_RCAR_LVDS
>
> But VSP and WRITEBACK are already implicitly dependant upon DRM_RCAR_DU
> because they get built into the DU module.
>
> So indeed, only the RCAR_LVDS is a separate module, using those helpers,
> so I think a select is a reasonable fix.
>
> I would also ask whether DRM_RCAR_LVDS should depend upon DRM_RCAR_DU
> though as well.
>
> There is no linkage requirement, as it's a standalone bridge driver from
> what I can see, but I don't think it serves much purpose without the DU?

I have actually spotted when using arch/arm/configs/multi_v7_defconfig where
DRM_RCAR_DU is built as module. But when I was reviewing it I was able to
compile RCAR_LVDS=y with DRM_RCAR_DU=n. Also, according to
https://patchwork.kernel.org/patch/10159063/, the LVDS encoders used to be
described as part of the DU but not after the patch. So, I assume it can
be used without the DU but not completely sure.

>
> Anyway, even if it's just for compile testing maybe, the select here
> should be fine.
>
> Reviewed-by: Kieran Bingham <[email protected]>
>
> > Signed-off-by: Daniel Gomez <[email protected]>
> > ---
> > drivers/gpu/drm/rcar-du/Kconfig | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig
> > index 0919f1f159a4..f65d1489dc50 100644
> > --- a/drivers/gpu/drm/rcar-du/Kconfig
> > +++ b/drivers/gpu/drm/rcar-du/Kconfig
> > @@ -31,6 +31,7 @@ config DRM_RCAR_DW_HDMI
> > config DRM_RCAR_LVDS
> > tristate "R-Car DU LVDS Encoder Support"
> > depends on DRM && DRM_BRIDGE && OF
> > + select DRM_KMS_HELPER
> > select DRM_PANEL
> > select OF_FLATTREE
> > select OF_OVERLAY
> >
>

2020-05-22 20:29:04

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] drm: rcar-du: Fix build error

Hi Daniel,

Thank you for the patch.

On Mon, May 18, 2020 at 10:16:46PM +0200, Daniel Gomez wrote:
> Select DRM_KMS_HELPER dependency.
>
> Build error when DRM_KMS_HELPER is not selected:
>
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
> drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
>
> Signed-off-by: Daniel Gomez <[email protected]>

Reviewed-by: Laurent Pinchart <[email protected]>

and taken in my tree for v5.9. If you think it should get in v5.8 as a
fix, I can do so as well, could you then provide a Fixes: tag ?

> ---
> drivers/gpu/drm/rcar-du/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig
> index 0919f1f159a4..f65d1489dc50 100644
> --- a/drivers/gpu/drm/rcar-du/Kconfig
> +++ b/drivers/gpu/drm/rcar-du/Kconfig
> @@ -31,6 +31,7 @@ config DRM_RCAR_DW_HDMI
> config DRM_RCAR_LVDS
> tristate "R-Car DU LVDS Encoder Support"
> depends on DRM && DRM_BRIDGE && OF
> + select DRM_KMS_HELPER
> select DRM_PANEL
> select OF_FLATTREE
> select OF_OVERLAY

--
Regards,

Laurent Pinchart

2020-05-23 09:42:54

by Daniel G

[permalink] [raw]
Subject: Re: [PATCH] drm: rcar-du: Fix build error

Hi Laurent,

On Fri, 22 May 2020 at 22:24, Laurent Pinchart
<[email protected]> wrote:
>
> Hi Daniel,
>
> Thank you for the patch.
>
> On Mon, May 18, 2020 at 10:16:46PM +0200, Daniel Gomez wrote:
> > Select DRM_KMS_HELPER dependency.
> >
> > Build error when DRM_KMS_HELPER is not selected:
> >
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
> > drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
> >
Fixes: c6a27fa41fab ("drm: rcar-du: Convert LVDS encoder code to bridge driver")
> > Signed-off-by: Daniel Gomez <[email protected]>
>
> Reviewed-by: Laurent Pinchart <[email protected]>
>
> and taken in my tree for v5.9. If you think it should get in v5.8 as a
> fix, I can do so as well, could you then provide a Fixes: tag ?
That would be fine. You can find above the fixes tag.
Thanks!

>
> > ---
> > drivers/gpu/drm/rcar-du/Kconfig | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig
> > index 0919f1f159a4..f65d1489dc50 100644
> > --- a/drivers/gpu/drm/rcar-du/Kconfig
> > +++ b/drivers/gpu/drm/rcar-du/Kconfig
> > @@ -31,6 +31,7 @@ config DRM_RCAR_DW_HDMI
> > config DRM_RCAR_LVDS
> > tristate "R-Car DU LVDS Encoder Support"
> > depends on DRM && DRM_BRIDGE && OF
> > + select DRM_KMS_HELPER
> > select DRM_PANEL
> > select OF_FLATTREE
> > select OF_OVERLAY
>
> --
> Regards,
>
> Laurent Pinchart
Daniel