* [PATCH] GPU: drm: meson inline drm_simple_encoder_init()
@ 2026-06-22 18:08 Liam Zuiderhoek
2026-06-22 18:18 ` sashiko-bot
2026-08-13 2:55 ` kernel test robot
0 siblings, 2 replies; 3+ messages in thread
From: Liam Zuiderhoek @ 2026-06-22 18:08 UTC (permalink / raw)
To: tzimmermann; +Cc: linux-kernel, dri-devel, Liam Zuiderhoek
Inline the call to drm_simple_encoder_init() for meson,
as per the TODO list on docs.kernel.org/gpu/todo.html
Signed-off-by: Liam Zuiderhoek <zuiderhoekl@gmail.com>
---
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index 55c0601df3c6..48ca6874d4a0 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -407,8 +407,8 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv)
meson_encoder_hdmi->priv = priv;
/* Encoder */
- ret = drm_simple_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
- DRM_MODE_ENCODER_TMDS);
+ ret = drm_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
+ DRM_MODE_ENCODER_TMDS, NULL);
if (ret) {
dev_err_probe(priv->dev, ret, "Failed to init HDMI encoder\n");
goto err_put_node;
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] GPU: drm: meson inline drm_simple_encoder_init()
2026-06-22 18:08 [PATCH] GPU: drm: meson inline drm_simple_encoder_init() Liam Zuiderhoek
@ 2026-06-22 18:18 ` sashiko-bot
2026-08-13 2:55 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-06-22 18:18 UTC (permalink / raw)
To: Liam Zuiderhoek; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [High] Incorrect inlining of `drm_simple_encoder_init()` omits the `funcs` parameter, passing 4 arguments to a function expecting at least 5, resulting in a severe type mismatch and a missing `drm_encoder_funcs` structure.
Pre-existing issues:
- [High] Failure to remove the DRM bridge on error paths leaves a dangling pointer in the global bridge list and permanently leaks the bridge container memory.
--
commit cff971d423a1058d9ded86a03517245fb14f47c1
Author: Liam Zuiderhoek <zuiderhoekl@gmail.com>
GPU: drm: meson inline drm_simple_encoder_init()
This patch replaces the drm_simple_encoder_init() call in the meson HDMI
encoder with a direct call to drm_encoder_init() as part of the DRM subsystem
TODO list.
> diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
> index 55c0601df3c62..48ca6874d4a01 100644
> --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
> +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
> @@ -407,8 +407,8 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv)
> meson_encoder_hdmi->priv = priv;
>
> /* Encoder */
> - ret = drm_simple_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
> - DRM_MODE_ENCODER_TMDS);
> + ret = drm_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
> + DRM_MODE_ENCODER_TMDS, NULL);
[Severity: High]
Does this pass the correct number of arguments to drm_encoder_init()?
Looking at drm_encoder_init() in drm_encoder.c, it expects at least five
arguments:
drm_encoder_init(dev, encoder, funcs, encoder_type, name, ...)
With only four arguments provided here in meson_encoder_hdmi_probe(), this
appears to pass the integer DRM_MODE_ENCODER_TMDS into the const struct
drm_encoder_funcs *funcs parameter, and NULL into the encoder_type parameter,
omitting the name parameter entirely.
Will this cause a build failure, or a panic when funcs->destroy is later
dereferenced?
> if (ret) {
> dev_err_probe(priv->dev, ret, "Failed to init HDMI encoder\n");
> goto err_put_node;
[Severity: High]
This isn't a bug introduced by this patch, but does this error path need to
call drm_bridge_remove() to prevent a memory leak?
Earlier in meson_encoder_hdmi_probe(), the bridge is added to the global
bridge list:
drm_bridge_add(&meson_encoder_hdmi->bridge);
If drm_encoder_init() fails and takes this goto err_put_node path, the
bridge remains in the global bridge list with an elevated refcount because
drm_bridge_remove() is not called.
Could this leave an orphaned bridge that permanently breaks the display
pipeline on subsequent probe retries?
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260622180832.28143-1-zuiderhoekl@gmail.com?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] GPU: drm: meson inline drm_simple_encoder_init()
2026-06-22 18:08 [PATCH] GPU: drm: meson inline drm_simple_encoder_init() Liam Zuiderhoek
2026-06-22 18:18 ` sashiko-bot
@ 2026-08-13 2:55 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2026-08-13 2:55 UTC (permalink / raw)
To: Liam Zuiderhoek, tzimmermann
Cc: oe-kbuild-all, linux-kernel, dri-devel, Liam Zuiderhoek
Hi Liam,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on daeinki-drm-exynos/exynos-drm-next drm/drm-next drm-i915/for-linux-next drm-i915/for-linux-next-fixes drm-tip/drm-tip linus/master v7.2-rc7 next-20260811]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Liam-Zuiderhoek/GPU-drm-meson-inline-drm_simple_encoder_init/20260813-051125
base: https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next
patch link: https://lore.kernel.org/r/20260622180832.28143-1-zuiderhoekl%40gmail.com
patch subject: [PATCH] GPU: drm: meson inline drm_simple_encoder_init()
config: powerpc-allmodconfig (https://download.01.org/0day-ci/archive/20260813/202608131017.r8RRcaja-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260813/202608131017.r8RRcaja-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608131017.r8RRcaja-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/drm/drm_property.h:30,
from include/drm/drm_connector.h:33,
from include/drm/drm_modes.h:33,
from include/drm/drm_crtc.h:32,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu/drm/meson/meson_encoder_hdmi.c:21:
drivers/gpu/drm/meson/meson_encoder_hdmi.c: In function 'meson_encoder_hdmi_probe':
>> include/uapi/drm/drm_mode.h:358:33: error: passing argument 3 of 'drm_encoder_init' makes pointer from integer without a cast [-Wint-conversion]
358 | #define DRM_MODE_ENCODER_TMDS 2
| ^
| |
| int
drivers/gpu/drm/meson/meson_encoder_hdmi.c:411:32: note: in expansion of macro 'DRM_MODE_ENCODER_TMDS'
411 | DRM_MODE_ENCODER_TMDS, NULL);
| ^~~~~~~~~~~~~~~~~~~~~
In file included from include/drm/drm_modeset_helper_vtables.h:33,
from include/drm/drm_atomic_helper.h:32:
include/drm/drm_encoder.h:212:54: note: expected 'const struct drm_encoder_funcs *' but argument is of type 'int'
212 | const struct drm_encoder_funcs *funcs,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
In file included from include/uapi/linux/posix_types.h:5,
from include/uapi/linux/types.h:14,
from include/linux/types.h:5,
from include/linux/kasan-checks.h:5,
from include/asm-generic/rwonce.h:26,
from ./arch/powerpc/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:369,
from include/linux/err.h:5,
from include/linux/clk.h:12,
from drivers/gpu/drm/meson/meson_encoder_hdmi.c:8:
>> include/linux/stddef.h:8:14: error: passing argument 4 of 'drm_encoder_init' makes integer from pointer without a cast [-Wint-conversion]
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
| |
| void *
drivers/gpu/drm/meson/meson_encoder_hdmi.c:411:55: note: in expansion of macro 'NULL'
411 | DRM_MODE_ENCODER_TMDS, NULL);
| ^~~~
include/drm/drm_encoder.h:213:26: note: expected 'int' but argument is of type 'void *'
213 | int encoder_type, const char *name, ...);
| ~~~~^~~~~~~~~~~~
>> drivers/gpu/drm/meson/meson_encoder_hdmi.c:410:15: error: too few arguments to function 'drm_encoder_init'; expected at least 5, have 4
410 | ret = drm_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
| ^~~~~~~~~~~~~~~~
include/drm/drm_encoder.h:210:5: note: declared here
210 | int drm_encoder_init(struct drm_device *dev,
| ^~~~~~~~~~~~~~~~
--
In file included from include/drm/drm_property.h:30,
from include/drm/drm_connector.h:33,
from include/drm/drm_modes.h:33,
from include/drm/drm_crtc.h:32,
from include/drm/drm_atomic_helper.h:31,
from drm/meson/meson_encoder_hdmi.c:21:
drm/meson/meson_encoder_hdmi.c: In function 'meson_encoder_hdmi_probe':
>> include/uapi/drm/drm_mode.h:358:33: error: passing argument 3 of 'drm_encoder_init' makes pointer from integer without a cast [-Wint-conversion]
358 | #define DRM_MODE_ENCODER_TMDS 2
| ^
| |
| int
drm/meson/meson_encoder_hdmi.c:411:32: note: in expansion of macro 'DRM_MODE_ENCODER_TMDS'
411 | DRM_MODE_ENCODER_TMDS, NULL);
| ^~~~~~~~~~~~~~~~~~~~~
In file included from include/drm/drm_modeset_helper_vtables.h:33,
from include/drm/drm_atomic_helper.h:32:
include/drm/drm_encoder.h:212:54: note: expected 'const struct drm_encoder_funcs *' but argument is of type 'int'
212 | const struct drm_encoder_funcs *funcs,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
In file included from include/uapi/linux/posix_types.h:5,
from include/uapi/linux/types.h:14,
from include/linux/types.h:5,
from include/linux/kasan-checks.h:5,
from include/asm-generic/rwonce.h:26,
from arch/powerpc/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:369,
from include/linux/err.h:5,
from include/linux/clk.h:12,
from drm/meson/meson_encoder_hdmi.c:8:
>> include/linux/stddef.h:8:14: error: passing argument 4 of 'drm_encoder_init' makes integer from pointer without a cast [-Wint-conversion]
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
| |
| void *
drm/meson/meson_encoder_hdmi.c:411:55: note: in expansion of macro 'NULL'
411 | DRM_MODE_ENCODER_TMDS, NULL);
| ^~~~
include/drm/drm_encoder.h:213:26: note: expected 'int' but argument is of type 'void *'
213 | int encoder_type, const char *name, ...);
| ~~~~^~~~~~~~~~~~
drm/meson/meson_encoder_hdmi.c:410:15: error: too few arguments to function 'drm_encoder_init'; expected at least 5, have 4
410 | ret = drm_encoder_init(priv->drm, &meson_encoder_hdmi->encoder,
| ^~~~~~~~~~~~~~~~
include/drm/drm_encoder.h:210:5: note: declared here
210 | int drm_encoder_init(struct drm_device *dev,
| ^~~~~~~~~~~~~~~~
vim +/drm_encoder_init +358 include/uapi/drm/drm_mode.h
8cf5c917715153 include/drm/drm_mode.h Jesse Barnes 2011-11-14 355
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 356 #define DRM_MODE_ENCODER_NONE 0
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 357 #define DRM_MODE_ENCODER_DAC 1
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 @358 #define DRM_MODE_ENCODER_TMDS 2
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 359 #define DRM_MODE_ENCODER_LVDS 3
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 360 #define DRM_MODE_ENCODER_TVDAC 4
a7331e5cb2cc68 include/drm/drm_mode.h Thomas Hellstrom 2011-10-22 361 #define DRM_MODE_ENCODER_VIRTUAL 5
b89232732f642b include/uapi/drm/drm_mode.h Shobhit Kumar 2013-08-27 362 #define DRM_MODE_ENCODER_DSI 6
182407a6ed5333 include/uapi/drm/drm_mode.h Dave Airlie 2014-05-02 363 #define DRM_MODE_ENCODER_DPMST 7
0b27c02a7f1c69 include/uapi/drm/drm_mode.h Eric Anholt 2016-03-18 364 #define DRM_MODE_ENCODER_DPI 8
f453ba0460742a include/drm/drm_mode.h Dave Airlie 2008-11-07 365
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-13 2:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-22 18:08 [PATCH] GPU: drm: meson inline drm_simple_encoder_init() Liam Zuiderhoek
2026-06-22 18:18 ` sashiko-bot
2026-08-13 2:55 ` kernel test robot
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.