amdgpu: fix panic on old GPUs
Subsystems (5)
v3 cover amdgpu: fix panic on old GPUs
Because of incomplete backports to stable kernels, DC ended up breaking on older GCN 1 GPUs. This patchset adds the missing upstream commits to at least fix the panic/black screen on boot.
They are applicable to 6.12, 6.6, and 6.1 as those are the currently supported kernels that 7009e3af0474aca5f64262b3c72fb6e23b232f9b got backported to.
6.1 needs two extra backports for these two commits to be cherry-picked cleanly. Those are
96ce96f8773da4814622fd97e5226915a2c30706d09ef243035b75a6d403ebfeb7e87fa20d7e25c6
v3: Add those commits to this series and sign them off.
v2: Add Signed-off-by.
Alex Deucher (2):
drm/amdgpu: use proper DC check in amdgpu_display_supported_domains() drm/amdgpu: clarify DC checks
Timur Kristóf (2):
drm/amd/display: Add pixel_clock to amd_pp_display_configuration drm/amd/pm: Use pm_display_cfg in legacy DPM (v2)
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 32 ++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + .../amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c | 1 + .../dc/clk_mgr/dce110/dce110_clk_mgr.c | 2 +- .../drm/amd/display/dc/dm_services_types.h | 2 +- drivers/gpu/drm/amd/include/dm_pp_interface.h | 1 + drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c | 67 +++++++++++++++++++ .../gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h | 2 + drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 4 +- .../gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 6 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 65 ++++++------------ .../gpu/drm/amd/pm/powerplay/amd_powerplay.c | 13 +--- 17 files changed, 126 insertions(+), 81 deletions(-)
--
2.53.0
PATCH v3 1/4 drm/amdgpu: use proper DC check in amdgpu_display_supported_domains()
From: Alex Deucher <[email protected]>
[ Upstream commit 96ce96f8773da4814622fd97e5226915a2c30706 ]
amdgpu_device_asic_has_dc_support() just checks the asic itself. amdgpu_device_has_dc_support() is a runtime check which not only checks the asic, but also other things in the driver like whether virtual display is enabled. We want the latter here.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -534,7 +534,7 @@ uint32_t amdgpu_display_supported_domains(struct amdgpu_device *adev,*/ if ((bo_flags &AMDGPU_GEM_CREATE_CPU_GTT_USWC ) &&amdgpu_bo_support_uswc (bo_flags) && -amdgpu_device_asic_has_dc_support (adev->asic_type) && +amdgpu_device_has_dc_support (adev) && adev->mode_info.gpu_vm_support) domain |=AMDGPU_GEM_DOMAIN_GTT ;#endif
--
2.53.0
Patch "drm/amdgpu: use proper DC check in amdgpu_display_supported_domains()" has been added to the 6.1-stable tree
This is a note to let you know that I've just added the patch titled
drm/amdgpu: use proper DC check in amdgpu_display_supported_domains()
to the 6.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-amdgpu-use-proper-dc-check-in-amdgpu_display_supported_domains.patch
and it can be found in the queue-6.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From [email protected] Sat Mar 21 06:45:14 2026
From: Rosen Penev <[email protected]>
Date: Fri, 20 Mar 2026 22:44:50 -0700
Subject: drm/amdgpu: use proper DC check in amdgpu_display_supported_domains()
To: [email protected]
Cc: "Alex Deucher" <[email protected]>, "Christian König" <[email protected]>, "Pan, Xinhui" <[email protected]>, "David Airlie" <[email protected]>, "Daniel Vetter" <[email protected]>, "Harry Wentland" <[email protected]>, "Leo Li" <[email protected]>, "Rodrigo Siqueira" <[email protected]>, "Evan Quan" <[email protected]>, "Mario Limonciello" <[email protected]>, "Sasha Levin" <[email protected]>, "Rosen Penev" <[email protected]>, "Lijo Lazar" <[email protected]>, "Ma Jun" <[email protected]>, "Greg Kroah-Hartman" <[email protected]>, "Srinivasan Shanmugam" <[email protected]>, "Mario Limonciello (AMD)" <[email protected]>, "Zhigang Luo" <[email protected]>, "Bert Karwatzki" <[email protected]>, "Ray Wu" <[email protected]>, "Wayne Lin" <[email protected]>, "Roman Li" <[email protected]>, "Hersen Wu" <[email protected]>, "Timur Kristóf" <[email protected]>, "Alex Hung" <[email protected]>, decce6 <[email protected]>, "Went
ao Liang" <[email protected]>, [email protected] (open list:RADEON and AMDGPU DRM DRIVERS), [email protected] (open list:DRM DRIVERS), [email protected] (open list)
Message-ID: <[email protected]>
From: Alex Deucher <[email protected]>
[ Upstream commit 96ce96f8773da4814622fd97e5226915a2c30706 ]
amdgpu_device_asic_has_dc_support() just checks the asic itself. amdgpu_device_has_dc_support() is a runtime check which not only checks the asic, but also other things in the driver like whether virtual display is enabled. We want the latter here.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -534,7 +534,7 @@ uint32_t amdgpu_display_supported_domain*/ if ((bo_flags &AMDGPU_GEM_CREATE_CPU_GTT_USWC ) &&amdgpu_bo_support_uswc (bo_flags) && -amdgpu_device_asic_has_dc_support (adev->asic_type) && +amdgpu_device_has_dc_support (adev) && adev->mode_info.gpu_vm_support) domain |=AMDGPU_GEM_DOMAIN_GTT ;#endif
Patches currently in stable-queue which might be from [email protected] are
queue-6.1/drm-amdgpu-clarify-dc-checks.patch queue-6.1/drm-amd-pm-use-pm_display_cfg-in-legacy-dpm-v2.patch queue-6.1/drm-amdgpu-use-proper-dc-check-in-amdgpu_display_supported_domains.patch queue-6.1/drm-amd-display-add-pixel_clock-to-amd_pp_display_configuration.patch
PATCH v3 2/4 drm/amdgpu: clarify DC checks
In reply to Rosen PenevFrom: Alex Deucher <[email protected]>
[ Upstream commit d09ef243035b75a6d403ebfeb7e87fa20d7e25c6 ]
There are several places where we don't want to check if a particular asic could support DC, but rather, if DC is enabled. Set a flag if DC is enabled and check for that rather than if a device supports DC or not.
--- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 32 ++++++++++--------- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + .../gpu/drm/amd/pm/powerplay/amd_powerplay.c | 2 +- 8 files changed, 25 insertions(+), 21 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -0
@@ -1071,6 +1071,7 @@ struct amdgpu_device {struct work_struct reset_work;bool job_hang; +bool dc_enabled; };static inline struct amdgpu_device *drm_to_adev (struct drm_device *ddev)
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +1 -1
@@ -857,7 +857,7 @@ int amdgpu_acpi_init(struct amdgpu_device *adev)struct amdgpu_atif *atif = &amdgpu_acpi_priv.atif;if (atif->notifications.brightness_change) { -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) {#if defined(CONFIG_DRM_AMD_DC )struct amdgpu_display_manager *dm = &adev->dm;
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +1 -1
@@ -1981,7 +1981,7 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev)amdgpu_ta_if_debugfs_init (adev);#if defined(CONFIG_DRM_AMD_DC ) -if (amdgpu_device_has_dc_support (adev)) +if (adev->dc_enabled)dtn_debugfs_init (adev);#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +17 -15
@@ -4402,25 +4402,27 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)amdgpu_ras_resume (adev); -/* -* Most of the connector probing functions try to acquire runtime pm -* refs to ensure that the GPU is powered on when connector polling is -* performed. Since we're calling this from a runtime PM callback, -* trying to acquire rpm refs will cause us to deadlock. -* -* Since we're guaranteed to be holding the rpm lock, it's safe to -* temporarily disable the rpm helpers so this doesn't deadlock us. -*/ +if (adev->mode_info.num_crtc) { +/* +* Most of the connector probing functions try to acquire runtime pm +* refs to ensure that the GPU is powered on when connector polling is +* performed. Since we're calling this from a runtime PM callback, +* trying to acquire rpm refs will cause us to deadlock. +* +* Since we're guaranteed to be holding the rpm lock, it's safe to +* temporarily disable the rpm helpers so this doesn't deadlock us. +*/ #ifdef CONFIG_PM - dev->dev->power.disable_depth++; + dev->dev->power.disable_depth++;#endif -if (!amdgpu_device_has_dc_support (adev)) -drm_helper_hpd_irq_event (dev); -else -drm_kms_helper_hotplug_event (dev); +if (!adev->dc_enabled) +drm_helper_hpd_irq_event (dev); +else +drm_kms_helper_hotplug_event (dev);#ifdef CONFIG_PM - dev->dev->power.disable_depth--; + dev->dev->power.disable_depth--;#endif + } adev->in_suspend = false;if (adev->enable_mes)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +2 -2
@@ -534,7 +534,7 @@ uint32_t amdgpu_display_supported_domains(struct amdgpu_device *adev,*/ if ((bo_flags &AMDGPU_GEM_CREATE_CPU_GTT_USWC ) &&amdgpu_bo_support_uswc (bo_flags) && -amdgpu_device_has_dc_support (adev) && + adev->dc_enabled && adev->mode_info.gpu_vm_support) domain |=AMDGPU_GEM_DOMAIN_GTT ;#endif
@@ -1330,7 +1330,7 @@ int amdgpu_display_modeset_create_props(struct amdgpu_device *adev)"dither" , amdgpu_dither_enum_list, sz); -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) { adev->mode_info.abm_level_property =drm_property_create_range (adev_to_drm (adev),0 ,"abm level" ,0 ,4 );
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -2530,7 +2530,7 @@ static int amdgpu_runtime_idle_check_display(struct device *dev)if (ret)return ret; -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) {struct drm_crtc *crtc;drm_for_each_crtc (crtc, drm_dev) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -0
@@ -4842,6 +4842,7 @@ static int dm_early_init(void *handle)adev_to_drm (adev)->dev, &dev_attr_s3_debug);#endif + adev->dc_enabled = true;return 0 ; }
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +1 -1
@@ -1567,7 +1567,7 @@ static void pp_pm_compute_clocks(void *handle)struct pp_hwmgr *hwmgr = handle;struct amdgpu_device *adev = hwmgr->adev; -if (!amdgpu_device_has_dc_support (adev)) { +if (!adev->dc_enabled) {amdgpu_dpm_get_active_displays (adev); adev->pm.pm_display_cfg.num_display = adev->pm.dpm.new_active_crtc_count; adev->pm.pm_display_cfg.vrefresh =amdgpu_dpm_get_vrefresh (adev);
--
2.53.0
Patch "drm/amdgpu: clarify DC checks" has been added to the 6.1-stable tree
This is a note to let you know that I've just added the patch titled
drm/amdgpu: clarify DC checks
to the 6.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-amdgpu-clarify-dc-checks.patch
and it can be found in the queue-6.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From [email protected] Sat Mar 21 06:45:17 2026
From: Rosen Penev <[email protected]>
Date: Fri, 20 Mar 2026 22:44:51 -0700
Subject: drm/amdgpu: clarify DC checks
To: [email protected]
Cc: "Alex Deucher" <[email protected]>, "Christian König" <[email protected]>, "Pan, Xinhui" <[email protected]>, "David Airlie" <[email protected]>, "Daniel Vetter" <[email protected]>, "Harry Wentland" <[email protected]>, "Leo Li" <[email protected]>, "Rodrigo Siqueira" <[email protected]>, "Evan Quan" <[email protected]>, "Mario Limonciello" <[email protected]>, "Sasha Levin" <[email protected]>, "Rosen Penev" <[email protected]>, "Lijo Lazar" <[email protected]>, "Ma Jun" <[email protected]>, "Greg Kroah-Hartman" <[email protected]>, "Srinivasan Shanmugam" <[email protected]>, "Mario Limonciello (AMD)" <[email protected]>, "Zhigang Luo" <[email protected]>, "Bert Karwatzki" <[email protected]>, "Ray Wu" <[email protected]>, "Wayne Lin" <[email protected]>, "Roman Li" <[email protected]>, "Hersen Wu" <[email protected]>, "Timur Kristóf" <[email protected]>, "Alex Hung" <[email protected]>, decce6 <[email protected]>, "Went
ao Liang" <[email protected]>, [email protected] (open list:RADEON and AMDGPU DRM DRIVERS), [email protected] (open list:DRM DRIVERS), [email protected] (open list)
Message-ID: <[email protected]>
From: Alex Deucher <[email protected]>
[ Upstream commit d09ef243035b75a6d403ebfeb7e87fa20d7e25c6 ]
There are several places where we don't want to check if a particular asic could support DC, but rather, if DC is enabled. Set a flag if DC is enabled and check for that rather than if a device supports DC or not.
--- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 - drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 32 +++++++++++----------- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 2 - 8 files changed, 25 insertions(+), 21 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -0
@@ -1071,6 +1071,7 @@ struct amdgpu_device {struct work_struct reset_work;bool job_hang; +bool dc_enabled; };static inline struct amdgpu_device *drm_to_adev (struct drm_device *ddev)
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +1 -1
@@ -857,7 +857,7 @@ int amdgpu_acpi_init(struct amdgpu_devicstruct amdgpu_atif *atif = &amdgpu_acpi_priv.atif;if (atif->notifications.brightness_change) { -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) {#if defined(CONFIG_DRM_AMD_DC )struct amdgpu_display_manager *dm = &adev->dm;
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +1 -1
@@ -1981,7 +1981,7 @@ int amdgpu_debugfs_init(struct amdgpu_deamdgpu_ta_if_debugfs_init (adev);#if defined(CONFIG_DRM_AMD_DC ) -if (amdgpu_device_has_dc_support (adev)) +if (adev->dc_enabled)dtn_debugfs_init (adev);#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +17 -15
@@ -4404,25 +4404,27 @@ int amdgpu_device_resume(struct drm_deviamdgpu_ras_resume (adev); -/* -* Most of the connector probing functions try to acquire runtime pm -* refs to ensure that the GPU is powered on when connector polling is -* performed. Since we're calling this from a runtime PM callback, -* trying to acquire rpm refs will cause us to deadlock. -* -* Since we're guaranteed to be holding the rpm lock, it's safe to -* temporarily disable the rpm helpers so this doesn't deadlock us. -*/ +if (adev->mode_info.num_crtc) { +/* +* Most of the connector probing functions try to acquire runtime pm +* refs to ensure that the GPU is powered on when connector polling is +* performed. Since we're calling this from a runtime PM callback, +* trying to acquire rpm refs will cause us to deadlock. +* +* Since we're guaranteed to be holding the rpm lock, it's safe to +* temporarily disable the rpm helpers so this doesn't deadlock us. +*/ #ifdef CONFIG_PM - dev->dev->power.disable_depth++; + dev->dev->power.disable_depth++;#endif -if (!amdgpu_device_has_dc_support (adev)) -drm_helper_hpd_irq_event (dev); -else -drm_kms_helper_hotplug_event (dev); +if (!adev->dc_enabled) +drm_helper_hpd_irq_event (dev); +else +drm_kms_helper_hotplug_event (dev);#ifdef CONFIG_PM - dev->dev->power.disable_depth--; + dev->dev->power.disable_depth--;#endif + } adev->in_suspend = false;if (adev->enable_mes)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +2 -2
@@ -534,7 +534,7 @@ uint32_t amdgpu_display_supported_domain*/ if ((bo_flags &AMDGPU_GEM_CREATE_CPU_GTT_USWC ) &&amdgpu_bo_support_uswc (bo_flags) && -amdgpu_device_has_dc_support (adev) && + adev->dc_enabled && adev->mode_info.gpu_vm_support) domain |=AMDGPU_GEM_DOMAIN_GTT ;#endif
@@ -1330,7 +1330,7 @@ int amdgpu_display_modeset_create_props("dither" , amdgpu_dither_enum_list, sz); -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) { adev->mode_info.abm_level_property =drm_property_create_range (adev_to_drm (adev),0 ,"abm level" ,0 ,4 );
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -2530,7 +2530,7 @@ static int amdgpu_runtime_idle_check_disif (ret)return ret; -if (amdgpu_device_has_dc_support (adev)) { +if (adev->dc_enabled) {struct drm_crtc *crtc;drm_for_each_crtc (crtc, drm_dev) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -0
@@ -4842,6 +4842,7 @@ static int dm_early_init(void *handle)adev_to_drm (adev)->dev, &dev_attr_s3_debug);#endif + adev->dc_enabled = true;return 0 ; }
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +1 -1
@@ -1567,7 +1567,7 @@ static void pp_pm_compute_clocks(void *hstruct pp_hwmgr *hwmgr = handle;struct amdgpu_device *adev = hwmgr->adev; -if (!amdgpu_device_has_dc_support (adev)) { +if (!adev->dc_enabled) {amdgpu_dpm_get_active_displays (adev); adev->pm.pm_display_cfg.num_display = adev->pm.dpm.new_active_crtc_count; adev->pm.pm_display_cfg.vrefresh =amdgpu_dpm_get_vrefresh (adev);
Patches currently in stable-queue which might be from [email protected] are
queue-6.1/drm-amdgpu-clarify-dc-checks.patch queue-6.1/drm-amd-pm-use-pm_display_cfg-in-legacy-dpm-v2.patch queue-6.1/drm-amdgpu-use-proper-dc-check-in-amdgpu_display_supported_domains.patch queue-6.1/drm-amd-display-add-pixel_clock-to-amd_pp_display_configuration.patch
PATCH v3 3/4 drm/amd/display: Add pixel_clock to amd_pp_display_configuration
In reply to Rosen PenevFrom: Timur Kristóf <[email protected]>
[ Upstream commit b515dcb0dc4e85d8254f5459cfb32fce88dacbfb ]
This commit adds the pixel_clock field to the display config struct so that power management (DPM) can use it.
We currently don't have a proper bandwidth calculation on old GPUs with DCE 6-10 because dce_calcs only supports DCE 11+. So the power management (DPM) on these GPUs may need to make ad-hoc decisions for display based on the pixel clock.
Also rename sym_clock to pixel_clock in dm_pp_single_disp_config to avoid confusion with other code where the sym_clock refers to the DisplayPort symbol clock.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c | 1 + drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c | 2 +- drivers/gpu/drm/amd/display/dc/dm_services_types.h | 2 +- drivers/gpu/drm/amd/include/dm_pp_interface.h | 1 + 4 files changed, 4 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c +1 -0
@@ -97,6 +97,7 @@ bool dm_pp_apply_display_requirements(const struct dm_pp_single_disp_config *dc_cfg = &pp_display_cfg->disp_configs[i]; adev->pm.pm_display_cfg.displays[i].controller_id = dc_cfg->pipe_idx +1 ; + adev->pm.pm_display_cfg.displays[i].pixel_clock = dc_cfg->pixel_clock; }amdgpu_dpm_display_configuration_change (adev, &adev->pm.pm_display_cfg);
drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c +1 -1
@@ -164,7 +164,7 @@ void dce110_fill_display_configs( stream->link->cur_link_settings.link_rate; cfg->link_settings.link_spread = stream->link->cur_link_settings.link_spread; - cfg->sym_clock = stream->phy_pix_clk; + cfg->pixel_clock = stream->phy_pix_clk;/* Round v_refresh*/ cfg->v_refresh = stream->timing.pix_clk_100hz *100 ; cfg->v_refresh /= stream->timing.h_total;
drivers/gpu/drm/amd/display/dc/dm_services_types.h +1 -1
@@ -127,7 +127,7 @@ struct dm_pp_single_disp_config {uint32_t src_height;uint32_t src_width;uint32_t v_refresh; -uint32_t sym_clock;/* HDMI only */ +uint32_t pixel_clock;/* Pixel clock in KHz (for HDMI only: normalized) */ struct dc_link_settings link_settings;/* DP only */ };
drivers/gpu/drm/amd/include/dm_pp_interface.h +1 -0
@@ -66,6 +66,7 @@ struct single_display_configurationuint32_t view_resolution_cy;enum amd_pp_display_config_type displayconfigtype;uint32_t vertical_refresh;/* for active display */ +uint32_t pixel_clock;/* Pixel clock in KHz (for HDMI only: normalized) */ };#define MAX_NUM_DISPLAY 32
--
2.53.0
Patch "drm/amd/display: Add pixel_clock to amd_pp_display_configuration" has been added to the 6.1-stable tree
This is a note to let you know that I've just added the patch titled
drm/amd/display: Add pixel_clock to amd_pp_display_configuration
to the 6.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-amd-display-add-pixel_clock-to-amd_pp_display_configuration.patch
and it can be found in the queue-6.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From [email protected] Sat Mar 21 06:45:19 2026
From: Rosen Penev <[email protected]>
Date: Fri, 20 Mar 2026 22:44:52 -0700
Subject: drm/amd/display: Add pixel_clock to amd_pp_display_configuration
To: [email protected]
Cc: "Alex Deucher" <[email protected]>, "Christian König" <[email protected]>, "Pan, Xinhui" <[email protected]>, "David Airlie" <[email protected]>, "Daniel Vetter" <[email protected]>, "Harry Wentland" <[email protected]>, "Leo Li" <[email protected]>, "Rodrigo Siqueira" <[email protected]>, "Evan Quan" <[email protected]>, "Mario Limonciello" <[email protected]>, "Sasha Levin" <[email protected]>, "Rosen Penev" <[email protected]>, "Lijo Lazar" <[email protected]>, "Ma Jun" <[email protected]>, "Greg Kroah-Hartman" <[email protected]>, "Srinivasan Shanmugam" <[email protected]>, "Mario Limonciello (AMD)" <[email protected]>, "Zhigang Luo" <[email protected]>, "Bert Karwatzki" <[email protected]>, "Ray Wu" <[email protected]>, "Wayne Lin" <[email protected]>, "Roman Li" <[email protected]>, "Hersen Wu" <[email protected]>, "Timur Kristóf" <[email protected]>, "Alex Hung" <[email protected]>, decce6 <[email protected]>, "Went
ao Liang" <[email protected]>, [email protected] (open list:RADEON and AMDGPU DRM DRIVERS), [email protected] (open list:DRM DRIVERS), [email protected] (open list)
Message-ID: <[email protected]>
From: Timur Kristóf <[email protected]>
[ Upstream commit b515dcb0dc4e85d8254f5459cfb32fce88dacbfb ]
This commit adds the pixel_clock field to the display config struct so that power management (DPM) can use it.
We currently don't have a proper bandwidth calculation on old GPUs with DCE 6-10 because dce_calcs only supports DCE 11+. So the power management (DPM) on these GPUs may need to make ad-hoc decisions for display based on the pixel clock.
Also rename sym_clock to pixel_clock in dm_pp_single_disp_config to avoid confusion with other code where the sym_clock refers to the DisplayPort symbol clock.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c | 1 + drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c | 2 +- drivers/gpu/drm/amd/display/dc/dm_services_types.h | 2 +- drivers/gpu/drm/amd/include/dm_pp_interface.h | 1 + 4 files changed, 4 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c +1 -0
@@ -97,6 +97,7 @@ bool dm_pp_apply_display_requirements(const struct dm_pp_single_disp_config *dc_cfg = &pp_display_cfg->disp_configs[i]; adev->pm.pm_display_cfg.displays[i].controller_id = dc_cfg->pipe_idx +1 ; + adev->pm.pm_display_cfg.displays[i].pixel_clock = dc_cfg->pixel_clock; }amdgpu_dpm_display_configuration_change (adev, &adev->pm.pm_display_cfg);
drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c +1 -1
@@ -164,7 +164,7 @@ void dce110_fill_display_configs( stream->link->cur_link_settings.link_rate; cfg->link_settings.link_spread = stream->link->cur_link_settings.link_spread; - cfg->sym_clock = stream->phy_pix_clk; + cfg->pixel_clock = stream->phy_pix_clk;/* Round v_refresh*/ cfg->v_refresh = stream->timing.pix_clk_100hz *100 ; cfg->v_refresh /= stream->timing.h_total;
drivers/gpu/drm/amd/display/dc/dm_services_types.h +1 -1
@@ -127,7 +127,7 @@ struct dm_pp_single_disp_config {uint32_t src_height;uint32_t src_width;uint32_t v_refresh; -uint32_t sym_clock;/* HDMI only */ +uint32_t pixel_clock;/* Pixel clock in KHz (for HDMI only: normalized) */ struct dc_link_settings link_settings;/* DP only */ };
drivers/gpu/drm/amd/include/dm_pp_interface.h +1 -0
@@ -66,6 +66,7 @@ struct single_display_configurationuint32_t view_resolution_cy;enum amd_pp_display_config_type displayconfigtype;uint32_t vertical_refresh;/* for active display */ +uint32_t pixel_clock;/* Pixel clock in KHz (for HDMI only: normalized) */ };#define MAX_NUM_DISPLAY 32
Patches currently in stable-queue which might be from [email protected] are
queue-6.1/drm-amdgpu-clarify-dc-checks.patch queue-6.1/drm-amd-pm-use-pm_display_cfg-in-legacy-dpm-v2.patch queue-6.1/drm-amdgpu-use-proper-dc-check-in-amdgpu_display_supported_domains.patch queue-6.1/drm-amd-display-add-pixel_clock-to-amd_pp_display_configuration.patch
PATCH v3 4/4 drm/amd/pm: Use pm_display_cfg in legacy DPM (v2)
In reply to Rosen PenevFrom: Timur Kristóf <[email protected]>
[ Upstream commit 9d73b107a61b73e7101d4b728ddac3d2c77db111 ]
This commit is necessary for DC to function well with chips that use the legacy power management code, ie. SI and KV. Communicate display information from DC to the legacy PM code.
Currently DC uses pm_display_cfg to communicate power management requirements from the display code to the DPM code. However, the legacy (non-DC) code path used different fields and therefore could not take into account anything from DC.
Change the legacy display code to fill the same pm_display_cfg struct as DC and use the same in the legacy DPM code.
To ease review and reduce churn, this commit does not yet delete the now unneeded code, that is done in the next commit.
v2:
Rebase.
Fix single_display in amdgpu_dpm_pick_power_state.
--- drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c | 67 +++++++++++++++++++ .../gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h | 2 + drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 4 +- .../gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 6 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 65 ++++++------------ .../gpu/drm/amd/pm/powerplay/amd_powerplay.c | 11 +-- 6 files changed, 97 insertions(+), 58 deletions(-)
drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c +67 -0
@@ -100,3 +100,70 @@ u32 amdgpu_dpm_get_vrefresh(struct amdgpu_device *adev)return vrefresh; } + +void amdgpu_dpm_get_display_cfg (struct amdgpu_device *adev) +{ +struct drm_device *ddev =adev_to_drm (adev); +struct amd_pp_display_configuration *cfg = &adev->pm.pm_display_cfg; +struct single_display_configuration *display_cfg; +struct drm_crtc *crtc; +struct amdgpu_crtc *amdgpu_crtc; +struct amdgpu_connector *conn; +int num_crtcs =0 ; +int vrefresh; +u32 vblank_in_pixels, vblank_time_us; + + cfg->min_vblank_time =0xffffffff ;/* if the displays are off, vblank time is max */ + +if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) { +list_for_each_entry (crtc, &ddev->mode_config.crtc_list, head) { + amdgpu_crtc =to_amdgpu_crtc (crtc); + +/* The array should only contain active displays. */ +if (!amdgpu_crtc->enabled) +continue ; + + conn =to_amdgpu_connector (amdgpu_crtc->connector); + display_cfg = &adev->pm.pm_display_cfg.displays[num_crtcs++]; + +if (amdgpu_crtc->hw_mode.clock) { + vrefresh =drm_mode_vrefresh (&amdgpu_crtc->hw_mode); + + vblank_in_pixels = + amdgpu_crtc->hw_mode.crtc_htotal * + (amdgpu_crtc->hw_mode.crtc_vblank_end - + amdgpu_crtc->hw_mode.crtc_vdisplay + + (amdgpu_crtc->v_border *2 )); + + vblank_time_us = + vblank_in_pixels *1000 / amdgpu_crtc->hw_mode.clock; + +/* The legacy (non-DC) code has issues with mclk switching +* with refresh rates over 120 Hz. Disable mclk switching. +*/ +if (vrefresh >120 ) + vblank_time_us =0 ; + +/* Find minimum vblank time. */ +if (vblank_time_us < cfg->min_vblank_time) + cfg->min_vblank_time = vblank_time_us; + +/* Find vertical refresh rate of first active display. */ +if (!cfg->vrefresh) + cfg->vrefresh = vrefresh; + } + +if (amdgpu_crtc->crtc_id < cfg->crtc_index) { +/* Find first active CRTC and its line time. */ + cfg->crtc_index = amdgpu_crtc->crtc_id; + cfg->line_time_in_us = amdgpu_crtc->line_time; + } + + display_cfg->controller_id = amdgpu_crtc->crtc_id; + display_cfg->pixel_clock = conn->pixelclock_for_modeset; + } + } + + cfg->display_clk = adev->clock.default_dispclk; + cfg->num_display = num_crtcs; +}
drivers/gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h +2 -0
@@ -29,4 +29,6 @@ u32 amdgpu_dpm_get_vblank_time(struct amdgpu_device *adev);u32 amdgpu_dpm_get_vrefresh (struct amdgpu_device *adev); +void amdgpu_dpm_get_display_cfg (struct amdgpu_device *adev); +#endif
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c +2 -2
@@ -2312,7 +2312,7 @@ static void kv_apply_state_adjust_rules(struct amdgpu_device *adev,if (pi->sys_info.nb_dpm_enable) { force_high = (mclk >= pi->sys_info.nbp_memory_clock[3 ]) || - pi->video_start || (adev->pm.dpm.new_active_crtc_count >=3 ) || + pi->video_start || (adev->pm.pm_display_cfg.num_display >=3 ) || pi->disable_nb_ps3_in_battery; ps->dpm0_pg_nb_ps_lo = force_high ?0x2 :0x3 ; ps->dpm0_pg_nb_ps_hi =0x2 ;
@@ -2371,7 +2371,7 @@ static int kv_calculate_nbps_level_settings(struct amdgpu_device *adev)return 0 ; force_high = ((mclk >= pi->sys_info.nbp_memory_clock[3 ]) || - (adev->pm.dpm.new_active_crtc_count >=3 ) || pi->video_start); + (adev->pm.pm_display_cfg.num_display >=3 ) || pi->video_start);if (force_high) {for (i = pi->lowest_valid; i <= pi->highest_valid; i++)
drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c +3 -3
@@ -797,8 +797,7 @@ static struct amdgpu_ps *amdgpu_dpm_pick_power_state(struct amdgpu_device *adev,int i;struct amdgpu_ps *ps;u32 ui_class; -bool single_display = (adev->pm.dpm.new_active_crtc_count <2 ) ? - true : false; +bool single_display = adev->pm.pm_display_cfg.num_display <2 ;/* check if the vblank period is too short to adjust the mclk */ if (single_display && adev->powerplay.pp_funcs->vblank_too_short) {
@@ -1003,7 +1002,8 @@ void amdgpu_legacy_dpm_compute_clocks(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; -amdgpu_dpm_get_active_displays (adev); +if (!adev->dc_enabled) +amdgpu_dpm_get_display_cfg (adev);amdgpu_dpm_change_power_state_locked (adev); }
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +22 -43
150 lines not on this page · raw message
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +1 -10
@@ -1568,16 +1568,7 @@ static void pp_pm_compute_clocks(void *handle)struct amdgpu_device *adev = hwmgr->adev;if (!adev->dc_enabled) { -amdgpu_dpm_get_active_displays (adev); - adev->pm.pm_display_cfg.num_display = adev->pm.dpm.new_active_crtc_count; - adev->pm.pm_display_cfg.vrefresh =amdgpu_dpm_get_vrefresh (adev); - adev->pm.pm_display_cfg.min_vblank_time =amdgpu_dpm_get_vblank_time (adev); -/* we have issues with mclk switching with -* refresh rates over 120 hz on the non-DC code. -*/ -if (adev->pm.pm_display_cfg.vrefresh >120 ) - adev->pm.pm_display_cfg.min_vblank_time =0 ; - +amdgpu_dpm_get_display_cfg (adev);pp_display_configuration_change (handle, &adev->pm.pm_display_cfg); }
--
2.53.0
Patch "drm/amd/pm: Use pm_display_cfg in legacy DPM (v2)" has been added to the 6.1-stable tree
This is a note to let you know that I've just added the patch titled
drm/amd/pm: Use pm_display_cfg in legacy DPM (v2)
to the 6.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-amd-pm-use-pm_display_cfg-in-legacy-dpm-v2.patch
and it can be found in the queue-6.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From [email protected] Sat Mar 21 06:45:21 2026
From: Rosen Penev <[email protected]>
Date: Fri, 20 Mar 2026 22:44:53 -0700
Subject: drm/amd/pm: Use pm_display_cfg in legacy DPM (v2)
To: [email protected]
Cc: "Alex Deucher" <[email protected]>, "Christian König" <[email protected]>, "Pan, Xinhui" <[email protected]>, "David Airlie" <[email protected]>, "Daniel Vetter" <[email protected]>, "Harry Wentland" <[email protected]>, "Leo Li" <[email protected]>, "Rodrigo Siqueira" <[email protected]>, "Evan Quan" <[email protected]>, "Mario Limonciello" <[email protected]>, "Sasha Levin" <[email protected]>, "Rosen Penev" <[email protected]>, "Lijo Lazar" <[email protected]>, "Ma Jun" <[email protected]>, "Greg Kroah-Hartman" <[email protected]>, "Srinivasan Shanmugam" <[email protected]>, "Mario Limonciello (AMD)" <[email protected]>, "Zhigang Luo" <[email protected]>, "Bert Karwatzki" <[email protected]>, "Ray Wu" <[email protected]>, "Wayne Lin" <[email protected]>, "Roman Li" <[email protected]>, "Hersen Wu" <[email protected]>, "Timur Kristóf" <[email protected]>, "Alex Hung" <[email protected]>, decce6 <[email protected]>, "Went
ao Liang" <[email protected]>, [email protected] (open list:RADEON and AMDGPU DRM DRIVERS), [email protected] (open list:DRM DRIVERS), [email protected] (open list)
Message-ID: <[email protected]>
From: Timur Kristóf <[email protected]>
[ Upstream commit 9d73b107a61b73e7101d4b728ddac3d2c77db111 ]
This commit is necessary for DC to function well with chips that use the legacy power management code, ie. SI and KV. Communicate display information from DC to the legacy PM code.
Currently DC uses pm_display_cfg to communicate power management requirements from the display code to the DPM code. However, the legacy (non-DC) code path used different fields and therefore could not take into account anything from DC.
Change the legacy display code to fill the same pm_display_cfg struct as DC and use the same in the legacy DPM code.
To ease review and reduce churn, this commit does not yet delete the now unneeded code, that is done in the next commit.
v2:
Rebase.
Fix single_display in amdgpu_dpm_pick_power_state.
--- drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c | 67 +++++++++++++++++++++++ drivers/gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h | 2 drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 4 - drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 6 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 65 +++++++--------------- drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 11 --- 6 files changed, 97 insertions(+), 58 deletions(-)
drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c +67 -0
@@ -100,3 +100,70 @@ u32 amdgpu_dpm_get_vrefresh(struct amdgpreturn vrefresh; } + +void amdgpu_dpm_get_display_cfg (struct amdgpu_device *adev) +{ +struct drm_device *ddev =adev_to_drm (adev); +struct amd_pp_display_configuration *cfg = &adev->pm.pm_display_cfg; +struct single_display_configuration *display_cfg; +struct drm_crtc *crtc; +struct amdgpu_crtc *amdgpu_crtc; +struct amdgpu_connector *conn; +int num_crtcs =0 ; +int vrefresh; +u32 vblank_in_pixels, vblank_time_us; + + cfg->min_vblank_time =0xffffffff ;/* if the displays are off, vblank time is max */ + +if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) { +list_for_each_entry (crtc, &ddev->mode_config.crtc_list, head) { + amdgpu_crtc =to_amdgpu_crtc (crtc); + +/* The array should only contain active displays. */ +if (!amdgpu_crtc->enabled) +continue ; + + conn =to_amdgpu_connector (amdgpu_crtc->connector); + display_cfg = &adev->pm.pm_display_cfg.displays[num_crtcs++]; + +if (amdgpu_crtc->hw_mode.clock) { + vrefresh =drm_mode_vrefresh (&amdgpu_crtc->hw_mode); + + vblank_in_pixels = + amdgpu_crtc->hw_mode.crtc_htotal * + (amdgpu_crtc->hw_mode.crtc_vblank_end - + amdgpu_crtc->hw_mode.crtc_vdisplay + + (amdgpu_crtc->v_border *2 )); + + vblank_time_us = + vblank_in_pixels *1000 / amdgpu_crtc->hw_mode.clock; + +/* The legacy (non-DC) code has issues with mclk switching +* with refresh rates over 120 Hz. Disable mclk switching. +*/ +if (vrefresh >120 ) + vblank_time_us =0 ; + +/* Find minimum vblank time. */ +if (vblank_time_us < cfg->min_vblank_time) + cfg->min_vblank_time = vblank_time_us; + +/* Find vertical refresh rate of first active display. */ +if (!cfg->vrefresh) + cfg->vrefresh = vrefresh; + } + +if (amdgpu_crtc->crtc_id < cfg->crtc_index) { +/* Find first active CRTC and its line time. */ + cfg->crtc_index = amdgpu_crtc->crtc_id; + cfg->line_time_in_us = amdgpu_crtc->line_time; + } + + display_cfg->controller_id = amdgpu_crtc->crtc_id; + display_cfg->pixel_clock = conn->pixelclock_for_modeset; + } + } + + cfg->display_clk = adev->clock.default_dispclk; + cfg->num_display = num_crtcs; +}
drivers/gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h +2 -0
@@ -29,4 +29,6 @@ u32 amdgpu_dpm_get_vblank_time(struct amu32 amdgpu_dpm_get_vrefresh (struct amdgpu_device *adev); +void amdgpu_dpm_get_display_cfg (struct amdgpu_device *adev); +#endif
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c +2 -2
@@ -2312,7 +2312,7 @@ static void kv_apply_state_adjust_rules(if (pi->sys_info.nb_dpm_enable) { force_high = (mclk >= pi->sys_info.nbp_memory_clock[3 ]) || - pi->video_start || (adev->pm.dpm.new_active_crtc_count >=3 ) || + pi->video_start || (adev->pm.pm_display_cfg.num_display >=3 ) || pi->disable_nb_ps3_in_battery; ps->dpm0_pg_nb_ps_lo = force_high ?0x2 :0x3 ; ps->dpm0_pg_nb_ps_hi =0x2 ;
@@ -2371,7 +2371,7 @@ static int kv_calculate_nbps_level_settireturn 0 ; force_high = ((mclk >= pi->sys_info.nbp_memory_clock[3 ]) || - (adev->pm.dpm.new_active_crtc_count >=3 ) || pi->video_start); + (adev->pm.pm_display_cfg.num_display >=3 ) || pi->video_start);if (force_high) {for (i = pi->lowest_valid; i <= pi->highest_valid; i++)
drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c +3 -3
@@ -797,8 +797,7 @@ static struct amdgpu_ps *amdgpu_dpm_pickint i;struct amdgpu_ps *ps;u32 ui_class; -bool single_display = (adev->pm.dpm.new_active_crtc_count <2 ) ? - true : false; +bool single_display = adev->pm.pm_display_cfg.num_display <2 ;/* check if the vblank period is too short to adjust the mclk */ if (single_display && adev->powerplay.pp_funcs->vblank_too_short) {
@@ -1003,7 +1002,8 @@ void amdgpu_legacy_dpm_compute_clocks(vo {struct amdgpu_device *adev = (struct amdgpu_device *)handle; -amdgpu_dpm_get_active_displays (adev); +if (!adev->dc_enabled) +amdgpu_dpm_get_display_cfg (adev);amdgpu_dpm_change_power_state_locked (adev); }
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +22 -43
150 lines not on this page · raw message
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +1 -10
@@ -1568,16 +1568,7 @@ static void pp_pm_compute_clocks(void *hstruct amdgpu_device *adev = hwmgr->adev;if (!adev->dc_enabled) { -amdgpu_dpm_get_active_displays (adev); - adev->pm.pm_display_cfg.num_display = adev->pm.dpm.new_active_crtc_count; - adev->pm.pm_display_cfg.vrefresh =amdgpu_dpm_get_vrefresh (adev); - adev->pm.pm_display_cfg.min_vblank_time =amdgpu_dpm_get_vblank_time (adev); -/* we have issues with mclk switching with -* refresh rates over 120 hz on the non-DC code. -*/ -if (adev->pm.pm_display_cfg.vrefresh >120 ) - adev->pm.pm_display_cfg.min_vblank_time =0 ; - +amdgpu_dpm_get_display_cfg (adev);pp_display_configuration_change (handle, &adev->pm.pm_display_cfg); }
Patches currently in stable-queue which might be from [email protected] are
queue-6.1/drm-amdgpu-clarify-dc-checks.patch queue-6.1/drm-amd-pm-use-pm_display_cfg-in-legacy-dpm-v2.patch queue-6.1/drm-amdgpu-use-proper-dc-check-in-amdgpu_display_supported_domains.patch queue-6.1/drm-amd-display-add-pixel_clock-to-amd_pp_display_configuration.patch
Quoted 8 lines · Rosen Penev
Because of incomplete backports to stable kernels, DC ended up breaking on older GCN 1 GPUs. This patchset adds the missing upstream commits to at least fix the panic/black screen on boot.
They are applicable to 6.12, 6.6, and 6.1 as those are the currently supported kernels that
7009e3af0474aca5f64262b3c72fb6e23b232f9bgot backported to.
Quoted 5 lines
6.1 needs two extra backports for these two commits to be cherry-picked cleanly. Those are
96ce96f8773da4814622fd97e5226915a2c30706d09ef243035b75a6d403ebfeb7e87fa20d7e25c6
Regards,
Christian.
Quoted 34 lines
v3: Add those commits to this series and sign them off.
v2: Add Signed-off-by.Alex Deucher (2):
drm/amdgpu: use proper DC check inamdgpu_display_supported_domains()drm/amdgpu: clarify DC checksTimur Kristóf (2):
drm/amd/display: Addpixel_clocktoamd_pp_display_configurationdrm/amd/pm: Usepm_display_cfgin legacy DPM (v2)drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 32 ++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + .../amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c | 1 + .../dc/clk_mgr/dce110/dce110_clk_mgr.c | 2 +- .../drm/amd/display/dc/dm_services_types.h | 2 +- drivers/gpu/drm/amd/include/dm_pp_interface.h | 1 + drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c | 67 +++++++++++++++++++ .../gpu/drm/amd/pm/inc/amdgpu_dpm_internal.h | 2 + drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 4 +- .../gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 6 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 65 ++++++------------ .../gpu/drm/amd/pm/powerplay/amd_powerplay.c | 13 +--- 17 files changed, 126 insertions(+), 81 deletions(-)--
2.53.0