On 2026. július 15., szerda 20:10:37 közép-európai nyári idő Harry Wentland 
wrote:
> On 2026-07-15 11:46, Zuo, Jerry wrote:
> > AMD General
> > 
> > It may not be necessary to identify whether it is FRL when creating the
> > queue. FRL is not determined until link detection. Whether make the queue
> > active or not is dynamically determined by whether an active FRL stream
> > presents.
> This checks whether the HW has any FRL capable encoders and only
> creates the workqueue if it does. The workqueue is still created
> regardless whether or not an FRL-capable device is plugged in.
> 
> Harry

Exactly as Harry says.
The workqueue should not be created when there is no FRL capable connector.
For example DCE6-12 (and older DCN) never need this workqueue at all.

> 
> >> -----Original Message-----
> >> From: amd-gfx <[email protected]> On Behalf Of Timur
> >> Kristóf
> >> Sent: Saturday, July 11, 2026 07:30
> >> To: [email protected]; Deucher, Alexander
> >> <[email protected]>; Tvrtko Ursulin <[email protected]>;
> >> Natalie Vock <[email protected]>; Melissa Wen <[email protected]>;
> >> Limonciello, Mario <[email protected]>; Hung, Alex
> >> <[email protected]>; Wentland, Harry <[email protected]>
> >> Cc: Timur Kristóf <[email protected]>
> >> Subject: [PATCH 2/2] drm/amd/display: Check HDMI FRL support before
> >> creating polling workqueue
> >> 
> >> The workqueue is not necessary when FRL is not supported or when it's
> >> disabled. Add a helper to tell when the current board has any HDMI FRL
> >> capable connectors and call that before creating the workqueue.
> >> 
> >> Signed-off-by: Timur Kristóf <[email protected]>
> >> ---
> >> 
> >>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  2 +-
> >>  drivers/gpu/drm/amd/display/dc/core/dc.c      | 26 +++++++++++++++++++
> >>  drivers/gpu/drm/amd/display/dc/dc.h           |  2 ++
> >>  3 files changed, 29 insertions(+), 1 deletion(-)
> >> 
> >> 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 6299f0e384f1..87d7b60ceb3f 100644
> >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> >> @@ -827,7 +827,7 @@ static int amdgpu_dm_init(struct amdgpu_device
> >> *adev)
> >> 
> >>               dc_init_callbacks(adev->dm.dc, &init_params);
> >>       
> >>       }
> >> 
> >> -     if (adev->dm.dc->caps.max_links > 0) {
> >> +     if (dc_is_hdmi_frl_supported(adev->dm.dc)) {
> >> 
> >>               adev->dm.hdmi_frl_status_polling_wq =
> >>       
> >>       create_singlethread_workqueue("hdmi_frl_status_polling_wq");
> >>       
> >>               if (!adev->dm.hdmi_frl_status_polling_wq)
> >> 
> >> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c
> >> b/drivers/gpu/drm/amd/display/dc/core/dc.c
> >> index 1b6627a92d24..1a7073abb8ba 100644
> >> --- a/drivers/gpu/drm/amd/display/dc/core/dc.c
> >> +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
> >> @@ -6592,6 +6592,32 @@ void
> >> dc_mclk_switch_using_fw_based_vblank_stretch_shut_down(struct dc *dc)
> >> 
> >>               dc->current_state-
> >>> 
> >>> bw_ctx.bw.dcn.clk.fw_based_mclk_switching_shut_down = true;  }
> >> 
> >> +/**
> >> + * dc_is_hdmi_frl_supported() - Check HDMI FRL support
> >> + *
> >> + * @dc: [in] dc structure
> >> + *
> >> + * Return:
> >> + * True if the current board has any HDMI FRL capable connectors,
> >> + * False otherwise.
> >> + */
> >> +bool dc_is_hdmi_frl_supported(struct dc *dc) {
> >> +     int i;
> >> +
> >> +     if (!dc->config.enable_frl)
> >> +             return false;
> >> +
> >> +     for (i = 0; i < dc->link_count; ++i) {
> >> +             if (dc->links[i] &&
> >> +                 dc->links[i]->link_enc &&
> >> +                 dc->links[i]->link_enc-
> >> 
> >>> features.flags.bits.IS_HDMI_FRL_CAPABLE)
> >> 
> >> +                     return true;
> >> +     }
> >> +
> >> +     return false;
> >> +}
> >> +
> >> 
> >>  /**
> >>  
> >>   * dc_is_dmub_outbox_supported - Check if DMUB firmware support outbox
> >> 
> >> notification
> >> 
> >>   *
> >> 
> >> diff --git a/drivers/gpu/drm/amd/display/dc/dc.h
> >> b/drivers/gpu/drm/amd/display/dc/dc.h
> >> index 13c1f7cd9d7d..d27c7437ee7a 100644
> >> --- a/drivers/gpu/drm/amd/display/dc/dc.h
> >> +++ b/drivers/gpu/drm/amd/display/dc/dc.h
> >> @@ -3056,6 +3056,8 @@ bool dc_set_ips_disable(struct dc *dc, unsigned int
> >> disable_ips);  void dc_z10_restore(const struct dc *dc);  void
> >> dc_z10_save_init(struct dc *dc);
> >> 
> >> +bool dc_is_hdmi_frl_supported(struct dc *dc);
> >> +
> >> 
> >>  bool dc_is_dmub_outbox_supported(struct dc *dc);  bool
> >> 
> >> dc_enable_dmub_notifications(struct dc *dc);
> >> 
> >> --
> >> 2.55.0




Reply via email to