* [PATCH for 6.1 1/2] drm/amdgpu: use proper DC check in amdgpu_display_supported_domains()
2026-02-28 1:12 [PATCH for 6.1 0/2] prepare to fix panic on old GPUs Rosen Penev
@ 2026-02-28 1:12 ` Rosen Penev
2026-02-28 1:12 ` [PATCH for 6.1 2/2] drm/amdgpu: clarify DC checks Rosen Penev
2026-02-28 1:28 ` [PATCH for 6.1 0/2] prepare to fix panic on old GPUs Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2026-02-28 1:12 UTC (permalink / raw)
To: stable
Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie,
Daniel Vetter, Harry Wentland, Leo Li, Rodrigo Siqueira,
Evan Quan, Sasha Levin, Mario Limonciello, Eliav Farber,
Lijo Lazar, Ma Jun, Greg Kroah-Hartman, Zhigang Luo,
Srinivasan Shanmugam, Bert Karwatzki, Ray Wu, Wayne Lin, Roman Li,
Hersen Wu, Wentao Liang, open list:RADEON and AMDGPU DRM DRIVERS,
open list:DRM DRIVERS, open list
From: Alex Deucher <alexander.deucher@amd.com>
[ 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.
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index cd0bccc95205..98cce09684f2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH for 6.1 2/2] drm/amdgpu: clarify DC checks
2026-02-28 1:12 [PATCH for 6.1 0/2] prepare to fix panic on old GPUs Rosen Penev
2026-02-28 1:12 ` [PATCH for 6.1 1/2] drm/amdgpu: use proper DC check in amdgpu_display_supported_domains() Rosen Penev
@ 2026-02-28 1:12 ` Rosen Penev
2026-02-28 1:28 ` [PATCH for 6.1 0/2] prepare to fix panic on old GPUs Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2026-02-28 1:12 UTC (permalink / raw)
To: stable
Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie,
Daniel Vetter, Harry Wentland, Leo Li, Rodrigo Siqueira,
Evan Quan, Sasha Levin, Mario Limonciello, Eliav Farber,
Lijo Lazar, Ma Jun, Greg Kroah-Hartman, Zhigang Luo,
Srinivasan Shanmugam, Bert Karwatzki, Ray Wu, Wayne Lin, Roman Li,
Hersen Wu, Wentao Liang, open list:RADEON and AMDGPU DRM DRIVERS,
open list:DRM DRIVERS, open list
From: Alex Deucher <alexander.deucher@amd.com>
[ 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.
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
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(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index dcb5de01a220..c4287e09658f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -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)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
index 5fa7f6d8aa30..9ced0c60ec8b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
@@ -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;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index 3cca3f07f34d..11bfbf1d6a3d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -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
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 535cc74c5880..a43f18defa7a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -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)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 98cce09684f2..f9692e724409 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -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);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 055e05b2cb22..3c01bb464248 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -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) {
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 f7fbc7932bb5..0d41a13c9019 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -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;
}
diff --git a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
index ab8ae7464664..9bf85ca607c3 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
@@ -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
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH for 6.1 0/2] prepare to fix panic on old GPUs
2026-02-28 1:12 [PATCH for 6.1 0/2] prepare to fix panic on old GPUs Rosen Penev
2026-02-28 1:12 ` [PATCH for 6.1 1/2] drm/amdgpu: use proper DC check in amdgpu_display_supported_domains() Rosen Penev
2026-02-28 1:12 ` [PATCH for 6.1 2/2] drm/amdgpu: clarify DC checks Rosen Penev
@ 2026-02-28 1:28 ` Greg Kroah-Hartman
2 siblings, 0 replies; 4+ messages in thread
From: Greg Kroah-Hartman @ 2026-02-28 1:28 UTC (permalink / raw)
To: Rosen Penev
Cc: stable, Alex Deucher, Christian König, Pan, Xinhui,
David Airlie, Daniel Vetter, Harry Wentland, Leo Li,
Rodrigo Siqueira, Evan Quan, Sasha Levin, Mario Limonciello,
Eliav Farber, Lijo Lazar, Ma Jun, Zhigang Luo,
Srinivasan Shanmugam, Bert Karwatzki, Ray Wu, Wayne Lin, Roman Li,
Hersen Wu, Wentao Liang, open list:RADEON and AMDGPU DRM DRIVERS,
open list:DRM DRIVERS, open list
On Fri, Feb 27, 2026 at 05:12:11PM -0800, Rosen Penev wrote:
> In order to backport upstream fixes for black screen on boot with DC
> and old GPUs, These two commits need backporting for 6.1.
What fixes exactly? Please make them part of the series, otherwise it
makes no sense for us to take them.
Also, you forgot to sign off on these patches, so we couldn't take them
even if we wanted to :(
thanks,
greg k-h
^ permalink raw reply [flat|nested] 4+ messages in thread