[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. 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