diff options
| author | Dave Airlie <airlied@redhat.com> | 2025-07-21 09:13:15 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2025-07-21 09:16:51 +1000 | 
| commit | be3cd668fffe2a1dc8a9c617b44c5f46fa2e4b96 (patch) | |
| tree | 53ff653774fc63598bd4ff9671ab060af5102698 /drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |
| parent | af42cf30ea5dfc946dca11ec2bca0e2d4bbb6f9e (diff) | |
| parent | 28c5c486380cc29e82b7747e999b3238f2887539 (diff) | |
Merge tag 'drm-misc-next-2025-07-17' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for 6.17:
UAPI Changes:
Cross-subsystem Changes:
Core Changes:
- mode_config: Change fb_create prototype to pass the drm_format_info
  and avoid redundant lookups in drivers
- sched: kunit improvements, memory leak fixes, reset handling
  improvements
- tests: kunit EDID update
Driver Changes:
- amdgpu: Hibernation fixes, structure lifetime fixes
- nouveau: sched improvements
- sitronix: Add Sitronix ST7567 Support
- bridge:
  - Make connector available to bridge detect hook
- panel:
  - More refcounting changes
  - New panels: BOE NE14QDM
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <mripard@redhat.com>
Link: https://lore.kernel.org/r/20250717-efficient-kudu-of-fantasy-ff95e0@houat
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 1c54b2e5a225..021defca9b61 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2541,6 +2541,10 @@ amdgpu_pci_shutdown(struct pci_dev *pdev)  	if (amdgpu_ras_intr_triggered())  		return; +	/* device maybe not resumed here, return immediately in this case */ +	if (adev->in_s4 && adev->in_suspend) +		return; +  	/* if we are running in a VM, make sure the device  	 * torn down properly on reboot/shutdown.  	 * unfortunately we can't detect certain @@ -2557,6 +2561,10 @@ static int amdgpu_pmops_prepare(struct device *dev)  	struct drm_device *drm_dev = dev_get_drvdata(dev);  	struct amdgpu_device *adev = drm_to_adev(drm_dev); +	/* device maybe not resumed here, return immediately in this case */ +	if (adev->in_s4 && adev->in_suspend) +		return 0; +  	/* Return a positive number here so  	 * DPM_FLAG_SMART_SUSPEND works properly  	 */ @@ -2655,12 +2663,21 @@ static int amdgpu_pmops_thaw(struct device *dev)  {  	struct drm_device *drm_dev = dev_get_drvdata(dev); +	/* do not resume device if it's normal hibernation */ +	if (!pm_hibernate_is_recovering()) +		return 0; +  	return amdgpu_device_resume(drm_dev, true);  }  static int amdgpu_pmops_poweroff(struct device *dev)  {  	struct drm_device *drm_dev = dev_get_drvdata(dev); +	struct amdgpu_device *adev = drm_to_adev(drm_dev); + +	/* device maybe not resumed here, return immediately in this case */ +	if (adev->in_s4 && adev->in_suspend) +		return 0;  	return amdgpu_device_suspend(drm_dev, true);  } | 
