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

Mario Limonciello mario.limonciello at amd.com
Tue Oct 3 16:31:44 UTC 2023


On 10/3/2023 07:58, Deucher, Alexander wrote:
> [AMD Official Use Only - General]
> 
>> -----Original Message-----
>> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Mario
>> Limonciello
>> Sent: Monday, October 2, 2023 6:45 PM
>> To: amd-gfx at lists.freedesktop.org
>> Cc: Wentland, Harry <Harry.Wentland at amd.com>; Limonciello, Mario
>> <Mario.Limonciello at amd.com>
>> 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 at amd.com>
>> ---
>>   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
> 



More information about the amd-gfx mailing list