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: irq resume should be immediately after gpu resume drm/amdgpu: add shadow bo support drm/amdgpu: set shadow flag for pd/pt bo 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/amd: wait neccessary dependency before running job drm/amdgpu: add vm recover pt fence drm/amdgpu: add backup condition for shadow page table drivers/gpu/drm/amd/amdgpu/amdgpu.h | 15 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 33 +++- drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 5 + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 36 ++++- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 219 ++++++++++++++++++++++---- drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 30 +++- drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 3 + include/uapi/drm/amdgpu_drm.h | 2 + 9 files changed, 316 insertions(+), 33 deletions(-) -- 1.9.1