From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D107848A2DE; Tue, 9 Jun 2026 18:08:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781028509; cv=none; b=Aa5BxlpWTaCNvm4KAFluyhLG8p/bgTBfHiQ1+sNrYciICrT+Ioq/G0SLshBi95RFwdh0V6ZUV1j73JtYDiIRbr+ZHZGFZstdDa/y4XGZskgsKyu7Dy/NDikrss9O5AOKZmtvRzZr3VcOo2tmIYmlA9wiCLYmoSZaELAtXh+7xII= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781028509; c=relaxed/simple; bh=bpY3QemIeCjx1P5g4wlHRCgNdtE4UdTtHtJcbUjHLv4=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=SwP/d+OcKo/5vmz8JwcEFk6agLTGXmEJmAsTEiC7qRzSjv4Fm7VdjWh6Wpwv8NpxdQc9E6wPCURABuTeMSbL7K8xKdm/d6HWxdjlULqP9CQ10HJeeM2aSGEAyLURBZpJA68by0/PP2RWFTtgWQfLwWKtwJBPuR7FKPTtnjXjFwA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Igalia.com; spf=pass smtp.mailfrom=Igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=qaJnOM4x; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=Igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=Igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="qaJnOM4x" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From: References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=jmQG5WeeSfeQ4cMKQ+NS5lS+P+mvFzUDCDF4Y0YvZF4=; b=qaJnOM4xPbHRuRrA/5QhuyqXHT wioW2PB9MmIR2QLo77PGoDvfr+ictJoxPSLT/QZjD6bsNqfkL2bqt6rTL+dheMHsMnmoazrGhQ4Xq 0o586vrmwRQCh0mF0oAkLmSOV6KsTsOCbjQJt5VPrjUvCjbyxbM1McFV6KW7qI01QHp45/Y77vs95 cUoG4SX2evcoqrSl6MLoC+uEqVbU26jWNngzJ97UXJ3fmNKp2VhBtDBSJTbF8FKDs5HQXoagkG0D3 qxRL6ws+ZNIZ3vTUpQlU9HI55lkDtsS9Wc2cJ0GUHRBdRWgzo0e5lldN5FQ3lJNQkaFv0YK/Xl4e9 SM4geRnA==; Received: from c-73-157-168-91.hsd1.or.comcast.net ([73.157.168.91] helo=[192.168.1.133]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128) (Exim) id 1wX0rj-00F6Ah-JX; Tue, 09 Jun 2026 20:07:55 +0200 Message-ID: <23cc1a03-39a6-4cc3-86ca-0d7c914ee40d@Igalia.com> Date: Tue, 9 Jun 2026 11:07:44 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 2/8] drm/amd/display: use drmm_writeback_connector_init() To: Alex Hung , Dmitry Baryshkov , Jani Nikula , "Kandpal, Suraj" , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Sean Paul , Marijn Suijten , Laurent Pinchart , Tomi Valkeinen , Kieran Bingham , Geert Uytterhoeven , Magnus Damm , Dave Stevenson , =?UTF-8?Q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance , Christophe JAILLET , Jessica Zhang , Louis Chauvet Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org References: <20260505-wb-drop-encoder-v5-0-42567b7c7af2@oss.qualcomm.com> <20260505-wb-drop-encoder-v5-2-42567b7c7af2@oss.qualcomm.com> <27db214f-b57b-45ab-8deb-da2aa8efb9d7@amd.com> Content-Language: en-GB From: John Harrison In-Reply-To: <27db214f-b57b-45ab-8deb-da2aa8efb9d7@amd.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Ping @Dmitry - is there any progress with this patch set? Thanks, John. On 5/26/26 11:46, Alex Hung wrote: > Will allocating wbcon with drmm_kzalloc before calling > amdgpu_dm_wb_connector_init be more memory-safe as below? > > > @@ -5790,7 +5791,8 @@ static int > amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) >          link = dc_get_link_at_index(dm->dc, i); > >          if (link->connector_signal == SIGNAL_TYPE_VIRTUAL) { > -            struct amdgpu_dm_wb_connector *wbcon = kzalloc_obj(*wbcon); > +            struct amdgpu_dm_wb_connector *wbcon = > +                drmm_kzalloc(adev_to_drm(adev), sizeof(*wbcon), > GFP_KERNEL); > >              if (!wbcon) { >                  drm_err(adev_to_drm(adev), "KMS: Failed to allocate > writeback connector\n"); > @@ -5799,7 +5801,6 @@ static int > amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) > >              if (amdgpu_dm_wb_connector_init(dm, wbcon, i)) { >                  drm_err(adev_to_drm(adev), "KMS: Failed to initialize > writeback connector\n"); > -                kfree(wbcon); >                  continue; >              } > > On 5/4/26 18:24, Dmitry Baryshkov wrote: >> The driver uses drm_writeback_connector_init() instead of its drmm >> counterpart, but it doesn't perform the job queue cleanup (neither >> manually nor by calling drm_writeback_connector_cleanup()). On the >> contrary, the drmm_writeback_connector_init() function ensures the >> proper cleanup of the job queue. >> >> Use drmm_plain_encoder_alloc() to allocate simple encoder and >> drmm_writeback_connector_init() in order to initialize writeback >> connector instance. >> >> Reviewed-by: Louis Chauvet >> Reviewed-by: Suraj Kandpal >> Signed-off-by: Dmitry Baryshkov >> --- >>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c    |  2 +- >>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 18 >> +++++++++++++----- >>   2 files changed, 14 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> index e96a12ff2d31..2ac64495cdb7 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> @@ -10683,7 +10683,7 @@ static void dm_set_writeback(struct >> amdgpu_display_manager *dm, >>           return; >>       } >>   -    acrtc = to_amdgpu_crtc(wb_conn->encoder.crtc); >> +    acrtc = to_amdgpu_crtc(crtc_state->base.crtc); >>       if (!acrtc) { >>           drm_err(adev_to_drm(adev), "no amdgpu_crtc found\n"); >>           kfree(wb_info); >> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c >> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c >> index 110f0173eee6..fdc3da40452f 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c >> @@ -169,7 +169,6 @@ static const struct drm_encoder_helper_funcs >> amdgpu_dm_wb_encoder_helper_funcs = >>     static const struct drm_connector_funcs >> amdgpu_dm_wb_connector_funcs = { >>       .fill_modes = drm_helper_probe_single_connector_modes, >> -    .destroy = drm_connector_cleanup, >>       .reset = amdgpu_dm_connector_funcs_reset, >>       .atomic_duplicate_state = >> amdgpu_dm_connector_atomic_duplicate_state, >>       .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, >> @@ -188,17 +187,26 @@ int amdgpu_dm_wb_connector_init(struct >> amdgpu_display_manager *dm, >>       struct dc *dc = dm->dc; >>       struct dc_link *link = dc_get_link_at_index(dc, link_index); >>       int res = 0; >> +    struct drm_encoder *encoder; >> + >> +    encoder = drmm_plain_encoder_alloc(&dm->adev->ddev, NULL, >> +                       DRM_MODE_ENCODER_VIRTUAL, NULL); >> +    if (IS_ERR(encoder)) >> +        return PTR_ERR(encoder); >> + >> +    drm_encoder_helper_add(encoder, >> &amdgpu_dm_wb_encoder_helper_funcs); >> + >> +    encoder->possible_crtcs = >> amdgpu_dm_get_encoder_crtc_mask(dm->adev); >>         wbcon->link = link; >>         drm_connector_helper_add(&wbcon->base.base, >> &amdgpu_dm_wb_conn_helper_funcs); >>   -    res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, >> +    res = drmm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, >>                           &amdgpu_dm_wb_connector_funcs, >> -                        &amdgpu_dm_wb_encoder_helper_funcs, >> +                        encoder, >>                           amdgpu_dm_wb_formats, >> -                        ARRAY_SIZE(amdgpu_dm_wb_formats), >> - amdgpu_dm_get_encoder_crtc_mask(dm->adev)); >> +                        ARRAY_SIZE(amdgpu_dm_wb_formats)); >>         if (res) >>           return res; >> >