Re: [PATCH v2 2/3] drm/amd: Move evict resources suspend step to prepare()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/3/2023 07:58, Deucher, Alexander wrote:
[AMD Official Use Only - General]

-----Original Message-----
From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Mario
Limonciello
Sent: Monday, October 2, 2023 6:45 PM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Wentland, Harry <Harry.Wentland@xxxxxxx>; Limonciello, Mario
<Mario.Limonciello@xxxxxxx>
Subject: [PATCH v2 2/3] drm/amd: Move evict resources suspend step to
prepare()

If the system is under high memory pressure, the resources may need to be
evicted into swap instead.  If the storage backing for swap is offlined during
the suspend() step then such a call may fail.

So instead move this step into prepare(), while leaving all other steps that put
the GPU into a low power state in suspend().

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2362
Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 12 +++++-------
  1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index c41d69e7a8f5..bb0e753fb6f8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4276,6 +4276,11 @@ int amdgpu_device_prepare(struct drm_device
*dev)
       if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
               return 0;

+     /* Evict the majority of BOs before grabbing the full access */
+     r = amdgpu_device_evict_resources(adev);
+     if (r)
+             return r;
+
       return 0;
  }

@@ -4297,13 +4302,6 @@ int amdgpu_device_suspend(struct drm_device
*dev, bool fbcon)
       if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
               return 0;

-     adev->in_suspend = true;

This shouldn't be dropped.


Thanks - that was a mistake when I was rebasing it.  I'll respin with a fix.

Alex

-
-     /* Evict the majority of BOs before grabbing the full access */
-     r = amdgpu_device_evict_resources(adev);
-     if (r)
-             return r;
-
       if (amdgpu_sriov_vf(adev)) {
               amdgpu_virt_fini_data_exchange(adev);
               r = amdgpu_virt_request_full_gpu(adev, false);
--
2.34.1





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux