lkml.org 
[lkml]   [2022]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 021/155] drm/i915/display: avoid warnings when registering dual panel backlight
    Date
    From: Arun R Murthy <arun.r.murthy@intel.com>

    [ Upstream commit 868e8e5156a1f8d92ca83fdbac6fd52798650792 ]

    Commit 20f85ef89d94 ("drm/i915/backlight: use unique backlight device
    names") added support for multiple backlight devices on dual panel
    systems, but did so with error handling on -EEXIST from
    backlight_device_register(). Unfortunately, that triggered a warning in
    dmesg all the way down from sysfs_add_file_mode_ns() and
    sysfs_warn_dup().

    Instead of optimistically always attempting to register with the default
    name ("intel_backlight", which we have to retain for backward
    compatibility), check if a backlight device with the name exists first,
    and, if so, use the card and connector based name.

    v2: reworked on top of the patch commit 20f85ef89d94
    ("drm/i915/backlight: use unique backlight device names")
    v3: fixed the ref count leak(Jani N)

    Fixes: 20f85ef89d94 ("drm/i915/backlight: use unique backlight device names")
    Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220808035750.3111046-1-arun.r.murthy@intel.com
    (cherry picked from commit 4234ea30051200fc6016de10e4d58369e60b38f1)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../gpu/drm/i915/display/intel_backlight.c | 26 +++++++++----------
    1 file changed, 12 insertions(+), 14 deletions(-)

    diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
    index c8e1fc53a881f..79f8a586623dc 100644
    --- a/drivers/gpu/drm/i915/display/intel_backlight.c
    +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
    @@ -970,26 +970,24 @@ int intel_backlight_device_register(struct intel_connector *connector)
    if (!name)
    return -ENOMEM;

    - bd = backlight_device_register(name, connector->base.kdev, connector,
    - &intel_backlight_device_ops, &props);
    -
    - /*
    - * Using the same name independent of the drm device or connector
    - * prevents registration of multiple backlight devices in the
    - * driver. However, we need to use the default name for backward
    - * compatibility. Use unique names for subsequent backlight devices as a
    - * fallback when the default name already exists.
    - */
    - if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
    + bd = backlight_device_get_by_name(name);
    + if (bd) {
    + put_device(&bd->dev);
    + /*
    + * Using the same name independent of the drm device or connector
    + * prevents registration of multiple backlight devices in the
    + * driver. However, we need to use the default name for backward
    + * compatibility. Use unique names for subsequent backlight devices as a
    + * fallback when the default name already exists.
    + */
    kfree(name);
    name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
    i915->drm.primary->index, connector->base.name);
    if (!name)
    return -ENOMEM;
    -
    - bd = backlight_device_register(name, connector->base.kdev, connector,
    - &intel_backlight_device_ops, &props);
    }
    + bd = backlight_device_register(name, connector->base.kdev, connector,
    + &intel_backlight_device_ops, &props);

    if (IS_ERR(bd)) {
    drm_err(&i915->drm,
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-09-06 16:03    [W:4.073 / U:1.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site