Message ID | 20250325-b4-panel-refcounting-v1-3-4e2bf5d19c5d@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panel: Panel Refcounting infrastructure | expand |
Hi Anusha, kernel test robot noticed the following build errors: [auto build test ERROR on c8ba07caaecc622a9922cda49f24790821af8a71] url: https://github.com/intel-lab-lkp/linux/commits/Anusha-Srivatsa/drm-panel-Add-new-helpers-for-refcounted-panel-allocatons/20250326-012651 base: c8ba07caaecc622a9922cda49f24790821af8a71 patch link: https://lore.kernel.org/r/20250325-b4-panel-refcounting-v1-3-4e2bf5d19c5d%40redhat.com patch subject: [PATCH 3/5] drm/panel: get/put panel reference in drm_panel_add/remove() config: xtensa-randconfig-001-20250326 (https://download.01.org/0day-ci/archive/20250326/202503260710.gDo7vXVR-lkp@intel.com/config) compiler: xtensa-linux-gcc (GCC) 7.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250326/202503260710.gDo7vXVR-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/202503260710.gDo7vXVR-lkp@intel.com/ All errors (new ones prefixed by >>, old ones prefixed by <<): WARNING: modpost: missing MODULE_DESCRIPTION() in arch/xtensa/platforms/iss/simdisk.o WARNING: modpost: missing MODULE_DESCRIPTION() in lib/slub_kunit.o >> ERROR: modpost: "drm_panel_put" [drivers/gpu/drm/drm.ko] undefined! >> ERROR: modpost: "drm_panel_get" [drivers/gpu/drm/drm.ko] undefined!
Hi Anusha, kernel test robot noticed the following build errors: [auto build test ERROR on c8ba07caaecc622a9922cda49f24790821af8a71] url: https://github.com/intel-lab-lkp/linux/commits/Anusha-Srivatsa/drm-panel-Add-new-helpers-for-refcounted-panel-allocatons/20250326-012651 base: c8ba07caaecc622a9922cda49f24790821af8a71 patch link: https://lore.kernel.org/r/20250325-b4-panel-refcounting-v1-3-4e2bf5d19c5d%40redhat.com patch subject: [PATCH 3/5] drm/panel: get/put panel reference in drm_panel_add/remove() config: hexagon-randconfig-002-20250326 (https://download.01.org/0day-ci/archive/20250326/202503261119.h0EEYLFA-lkp@intel.com/config) compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project c2692afc0a92cd5da140dfcdfff7818a5b8ce997) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250326/202503261119.h0EEYLFA-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/202503261119.h0EEYLFA-lkp@intel.com/ All errors (new ones prefixed by >>): >> ld.lld: error: undefined symbol: drm_panel_get >>> referenced by drm_panel.c:82 (drivers/gpu/drm/drm_panel.c:82) >>> drivers/gpu/drm/drm_panel.o:(drm_panel_add) in archive vmlinux.a >>> referenced by drm_panel.c:82 (drivers/gpu/drm/drm_panel.c:82) >>> drivers/gpu/drm/drm_panel.o:(drm_panel_add) in archive vmlinux.a -- >> ld.lld: error: undefined symbol: drm_panel_put >>> referenced by drm_panel.c:100 (drivers/gpu/drm/drm_panel.c:100) >>> drivers/gpu/drm/drm_panel.o:(drm_panel_remove) in archive vmlinux.a >>> referenced by drm_panel.c:100 (drivers/gpu/drm/drm_panel.c:100) >>> drivers/gpu/drm/drm_panel.o:(drm_panel_remove) in archive vmlinux.a
On Tue, 25 Mar 2025 13:24:10 -0400 Anusha Srivatsa <asrivats@redhat.com> wrote: > Take the panel reference and put it back as required > using the helpers introduced in previous patch. > drm_panel_add() and drm_panel_remove() > add a panel to the global registry and removes a panel > respectively, use get() and put() helpers to keep up > with refcounting. > > Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> This is OK but is should not be applied until all panel drivers are converted to the new devm_drm_panel_alloc() API. Otherwise for not-yet-converted panel drivers drm_panel_get/put() would operate on an uninitialized kref. See [0]. # Do not apply until all panel drivers are converted! Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> [0] https://lore.kernel.org/all/20250317155607.68cff522@booty/
On Tue, Mar 25, 2025 at 01:24:10PM -0400, Anusha Srivatsa wrote: > Take the panel reference and put it back as required > using the helpers introduced in previous patch. > drm_panel_add() and drm_panel_remove() > add a panel to the global registry and removes a panel > respectively, use get() and put() helpers to keep up > with refcounting. > > Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> We should defer merging that patch until we have converted all the panel drivers to the new allocation function. Maxime
On Wed, Mar 26, 2025 at 11:31 AM Maxime Ripard <mripard@kernel.org> wrote: > On Tue, Mar 25, 2025 at 01:24:10PM -0400, Anusha Srivatsa wrote: > > Take the panel reference and put it back as required > > using the helpers introduced in previous patch. > > drm_panel_add() and drm_panel_remove() > > add a panel to the global registry and removes a panel > > respectively, use get() and put() helpers to keep up > > with refcounting. > > > > Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> > > We should defer merging that patch until we have converted all the panel > drivers to the new allocation function. > > Luca, Maxime, I ll drop this patch in the next iteration and send it once it is ready to be merged. Anusha > Maxime >
diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c index 079c3c666a2ddc99a0051d1a3c9ba65d986dd003..11a0415bc61f59190ef5eb378d1583c493265e6a 100644 --- a/drivers/gpu/drm/drm_panel.c +++ b/drivers/gpu/drm/drm_panel.c @@ -79,6 +79,7 @@ EXPORT_SYMBOL(drm_panel_init); */ void drm_panel_add(struct drm_panel *panel) { + drm_panel_get(panel); mutex_lock(&panel_lock); list_add_tail(&panel->list, &panel_list); mutex_unlock(&panel_lock); @@ -96,6 +97,7 @@ void drm_panel_remove(struct drm_panel *panel) mutex_lock(&panel_lock); list_del_init(&panel->list); mutex_unlock(&panel_lock); + drm_panel_put(panel); } EXPORT_SYMBOL(drm_panel_remove);
Take the panel reference and put it back as required using the helpers introduced in previous patch. drm_panel_add() and drm_panel_remove() add a panel to the global registry and removes a panel respectively, use get() and put() helpers to keep up with refcounting. Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> --- drivers/gpu/drm/drm_panel.c | 2 ++ 1 file changed, 2 insertions(+)