Since we cannot make sure VRAM is safe after gpu reset, page table backup is neccessary, shadow page table is sense way to recovery page talbe when gpu reset happens. We need to allocate GTT bo as the shadow of VRAM bo when creating page table, and make them same. After gpu reset, we will need to use SDMA to copy GTT bo content to VRAM bo, then page table will be recoveried. Chunming Zhou (13): drm/amdgpu: add pd/pt bo shadow drm/amdgpu: update shadow pt bo while update pt drm/amdgpu: update pd shadow while updating pd drm/amdgpu: implement amdgpu_vm_recover_page_table_from_shadow drm/amdgpu: link all vm clients drm/amdgpu: add vm_list_lock drm/amd: add block entity function drm/amdgpu: recover page tables after gpu reset drm/amdgpu: add vm recover pt fence drm/amd: reset hw count when reset job drm/amd: fix deadlock of job_list_lock drm/amd: wait neccessary dependency before running job drm/amdgpu: fix sched deadoff drivers/gpu/drm/amd/amdgpu/amdgpu.h | 17 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 12 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 30 ++++- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +- drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 5 + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 161 ++++++++++++++++++++++++-- drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 35 +++++- drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 3 + 8 files changed, 250 insertions(+), 18 deletions(-) -- 1.9.1