On 08.07.25 09:42, Samuel Zhang wrote: > When hibernate with data center dGPUs, huge number of VRAM BOs evicted > to GTT and takes too much system memory. This will cause hibernation > fail due to insufficient memory for creating the hibernation image. > > Move GTT BOs to shmem in KMD, then shmem to swap disk in kernel > hibernation code to make room for hibernation image. > > Signed-off-by: Samuel Zhang <guoqing.zh...@amd.com>
Reviewed-by: Christian König <christian.koe...@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 684d66bc0b5f..2f977fece08f 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -5021,8 +5021,16 @@ static int amdgpu_device_evict_resources(struct > amdgpu_device *adev) > return 0; > > ret = amdgpu_ttm_evict_resources(adev, TTM_PL_VRAM); > - if (ret) > + if (ret) { > dev_warn(adev->dev, "evicting device resources failed\n"); > + return ret; > + } > + > + if (adev->in_s4) { > + ret = ttm_device_prepare_hibernation(&adev->mman.bdev); > + if (ret) > + dev_err(adev->dev, "prepare hibernation failed, %d\n", > ret); > + } > return ret; > } >