From: Daniel Vetter <daniel@ffwll.ch>
To: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Jernej Skrabec <jernej.skrabec@siol.net>,
Arnd Bergmann <arnd@arndb.de>,
Naresh Kamboju <naresh.kamboju@linaro.org>,
dri-devel@lists.freedesktop.org,
Jon Hunter <jonathanh@nvidia.com>, Chen-Yu Tsai <wens@csie.org>
Subject: Re: [PATCH] drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m
Date: Tue, 11 Sep 2018 22:17:02 +0200 [thread overview]
Message-ID: <20180911201702.GN19774@phenom.ffwll.local> (raw)
In-Reply-To: <20180911113325.11024-1-maxime.ripard@bootlin.com>
On Tue, Sep 11, 2018 at 01:33:25PM +0200, Maxime Ripard wrote:
> Having DRM_SUN4I built-in but DRM_SUN8I_MIXER as a loadable module results in
> a link error, as we try to access a symbol from the sun8i_tcon_top.ko module:
>
> ERROR: "sun8i_tcon_top_de_config" [drivers/gpu/drm/sun4i/sun4i-tcon.ko] undefined!
> ERROR: "sun8i_tcon_top_set_hdmi_src" [drivers/gpu/drm/sun4i/sun4i-tcon.ko] undefined!
> ERROR: "sun8i_tcon_top_of_table" [drivers/gpu/drm/sun4i/sun4i-tcon.ko] undefined!
>
> This solves the problem by adding a silent symbol for the tcon_top module,
> building it as a separate module in exactly the cases that we need it,
> but in a way that it is reachable by the other modules.
>
> Fixes: cf77d79b4e29 ("drm/sun4i: tcon: Add another way for matching mixers with tcon")
> Fixes: 0305189afb32 ("drm/sun4i: tcon: Add support for R40 TCON")
> Tested-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
But I can't help myself and drop the usual questions when I see a small
soc driver with more Kconfigs than anything else ... is all this pain
worth it? I know that maybe the desktop approach of stuffing half a
million lines of driver code into one .ko might be a bit too much for
socs, but this seems overkill.
I'm also pretty sure it's not justified by any real data, compared to
overall code size of a drm stack, that shows it's a substantial enough
saving that it's worth it.
Imo, if you really care about building a minimal driver, stuff everything
into one .ko and then LTO out the uneeded bits. We've done these
experiments for i915, that _actually_ saves a ton of binary size, with
fairly minimal code and maintenance impact. Still, we decided the payoff
is simply too small to bother making it a production thing.
Cheers, Daniel
> ---
> drivers/gpu/drm/sun4i/sun4i_tcon.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> index 4834c90b4912..c78cd35a1294 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> @@ -974,7 +974,8 @@ static bool sun4i_tcon_connected_to_tcon_top(struct device_node *node)
>
> remote = of_graph_get_remote_node(node, 0, -1);
> if (remote) {
> - ret = !!of_match_node(sun8i_tcon_top_of_table, remote);
> + ret = !!(IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) &&
> + of_match_node(sun8i_tcon_top_of_table, remote));
> of_node_put(remote);
> }
>
> @@ -1402,13 +1403,20 @@ static int sun8i_r40_tcon_tv_set_mux(struct sun4i_tcon *tcon,
> if (!pdev)
> return -EINVAL;
>
> - if (encoder->encoder_type == DRM_MODE_ENCODER_TMDS) {
> + if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) &&
> + encoder->encoder_type == DRM_MODE_ENCODER_TMDS) {
> ret = sun8i_tcon_top_set_hdmi_src(&pdev->dev, id);
> if (ret)
> return ret;
> }
>
> - return sun8i_tcon_top_de_config(&pdev->dev, tcon->id, id);
> + if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP)) {
> + ret = sun8i_tcon_top_de_config(&pdev->dev, tcon->id, id);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> }
>
> static const struct sun4i_tcon_quirks sun4i_a10_quirks = {
> --
> 2.17.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-09-11 20:17 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-11 11:33 [PATCH] drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m Maxime Ripard
2018-09-11 20:17 ` Daniel Vetter [this message]
2018-09-12 9:53 ` Maxime Ripard
2018-09-12 14:25 ` Daniel Vetter
2018-09-12 15:47 ` Maxime Ripard
2018-09-12 15:53 ` Daniel Vetter
2018-09-13 8:02 ` Maxime Ripard
2018-09-13 8:19 ` Arnd Bergmann
2018-09-12 14:02 ` Maxime Ripard
-- strict thread matches above, loose matches on Subject: below --
2018-07-06 12:45 Arnd Bergmann
2018-07-06 12:45 ` Arnd Bergmann
2018-07-06 12:45 ` Arnd Bergmann
2018-07-09 8:07 ` Maxime Ripard
2018-07-09 8:07 ` Maxime Ripard
2018-07-09 8:07 ` Maxime Ripard
2018-07-09 8:58 ` Jernej Škrabec
2018-07-09 8:58 ` Jernej Škrabec
2018-07-09 8:58 ` Chen-Yu Tsai
2018-07-09 8:58 ` Chen-Yu Tsai
2018-07-09 8:58 ` Chen-Yu Tsai
2018-07-09 9:15 ` Maxime Ripard
2018-07-09 9:15 ` Maxime Ripard
2018-07-09 9:15 ` Maxime Ripard
2018-07-09 9:17 ` Chen-Yu Tsai
2018-07-09 9:17 ` Chen-Yu Tsai
2018-07-09 9:17 ` Chen-Yu Tsai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180911201702.GN19774@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=arnd@arndb.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@siol.net \
--cc=jonathanh@nvidia.com \
--cc=maxime.ripard@bootlin.com \
--cc=naresh.kamboju@linaro.org \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.