gart table is stored in one bo which must be ready before gart init, but the shadow bo must be created after gart is ready, so they cannot be created at a same time. shado bo itself aslo is included in gart table, So shadow bo needs a synchronization after device init. After sync, the contents of bo and shadwo bo will be same, and be updated at a same time. Then we will be able to recover gart table from shadow bo when gpu full reset. patch10 is a fix for memory leak. Chunming Zhou (10): drm/amdgpu: make need_backup generic drm/amdgpu: implement gart late_init/fini drm/amdgpu: add gart_late_init/fini to gmc V7/8 drm/amdgpu: abstract amdgpu_bo_create_shadow drm/amdgpu: shadow gart table support drm/amdgpu: make recover_bo_from_shadow be generic drm/amdgpu: implement gart recovery drm/amdgpu: recover gart table first when full reset drm/amdgpu: sync gart table before initialization completed drm/amdgpu: fix memory leak of sched fence drivers/gpu/drm/amd/amdgpu/amdgpu.h | 9 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 + drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 139 +++++++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 80 ++++++++++++++--- drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 9 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 50 ++--------- drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 39 +++++++- drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 40 ++++++++- 9 files changed, 304 insertions(+), 66 deletions(-) -- 1.9.1