[PATCH 00/10] GART table recovery

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

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.

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(-)
>



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux