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
