[PATCH 00/10] GART table recovery

zhoucm1 david1.zhou at amd.com
Thu Aug 4 03:35:44 UTC 2016



On 2016年08月03日 22:01, Christian König wrote:
> Well patch #10 is incorrect. The SA BO will be set to NULL by 
> amdgpu_sa_bo_free(), so it can't be freed twice and so you can't 
> reference the fence twice.
I see.
But amdgpu_job_free_resources still shouldn't be called twice, right? 
That's an obvious duplication although it seems no effect now. Is there 
any other reason?

>
> Additional to that the whole approach here of restoring the GART from 
> the backup using the SDMA won't work either. For the SDMA to work you 
> need the GART to access the ring buffer.
>
> So you run into a chicken and egg problem here, for the ring buffer to 
> work you need the GART and for the GART backup to work you need the 
> ring buffer.
Good catch, ring buffer is a GTT buffer as well.

Then Can we use memcpy to copy GTT to VRAM? Fortunately, the GART bo is 
only one bo.

Regards,
David Zhou

>
> We should just restore the GART content from the housekeeping 
> structure instead. Going to evaluate if and how that might be possible.

>
> Regards,
> Christian.
>
> Am 02.08.2016 um 10:00 schrieb Chunming Zhou:
>> 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(-)
>>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list