[PATCH] drm/amdgpu: allocate GTT space for shadow VM page tables

Christian König deathsimple at vodafone.de
Fri Sep 16 10:03:06 UTC 2016


Could be, but possible that I've missed a few other places where GTT is 
used as well.

What issues where you seeing and are there any backtraces logged? I have 
a WARN_ON() in the code path which should trigger whenever I missed 
something.

Christian.

Am 16.09.2016 um 11:55 schrieb Mike Lothian:
>
> Does this fix the issue I was seeing since the new memory manager went 
> into thr 4.9-wip branch?
>
>
> On Fri, 16 Sep 2016, 10:48 am Christian König, 
> <deathsimple at vodafone.de <mailto:deathsimple at vodafone.de>> wrote:
>
>     From: Christian König <christian.koenig at amd.com
>     <mailto:christian.koenig at amd.com>>
>
>     We need to access those with the system domain.
>
>     Fixes fallout from only allocating GTT space on demand.
>
>     Signed-off-by: Christian König <christian.koenig at amd.com
>     <mailto:christian.koenig at amd.com>>
>     ---
>      drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 17 +++++++++++++++++
>      1 file changed, 17 insertions(+)
>
>     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>     b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>     index a6a48ed..8928a2a 100644
>     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>     @@ -552,6 +552,10 @@ static int amdgpu_vm_clear_bo(struct
>     amdgpu_device *adev,
>             if (r)
>                     goto error;
>
>     +       r = amdgpu_ttm_bind(&bo->tbo, &bo->tbo.mem);
>     +       if (r)
>     +               goto error;
>     +
>             addr = amdgpu_bo_gpu_offset(bo);
>             entries = amdgpu_bo_size(bo) / 8;
>
>     @@ -625,6 +629,11 @@ static int
>     amdgpu_vm_update_pd_or_shadow(struct amdgpu_device *adev,
>
>             if (!pd)
>                     return 0;
>     +
>     +       r = amdgpu_ttm_bind(&pd->tbo, &pd->tbo.mem);
>     +       if (r)
>     +               return r;
>     +
>             pd_addr = amdgpu_bo_gpu_offset(pd);
>             ring = container_of(vm->entity.sched, struct amdgpu_ring,
>     sched);
>
>     @@ -650,6 +659,14 @@ static int
>     amdgpu_vm_update_pd_or_shadow(struct amdgpu_device *adev,
>                     if (bo == NULL)
>                             continue;
>
>     +               if (bo->shadow) {
>     +                       struct amdgpu_bo *shadow = bo->shadow;
>     +
>     +                       r = amdgpu_ttm_bind(&shadow->tbo,
>     &shadow->tbo.mem);
>     +                       if (r)
>     +                               return r;
>     +               }
>     +
>                     pt = amdgpu_bo_gpu_offset(bo);
>                     if (!shadow) {
>                             if (vm->page_tables[pt_idx].addr == pt)
>     --
>     2.5.0
>
>     _______________________________________________
>     amd-gfx mailing list
>     amd-gfx at lists.freedesktop.org <mailto:amd-gfx at lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20160916/ec9f3360/attachment.html>


More information about the amd-gfx mailing list