> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Christian König > Sent: Thursday, July 27, 2017 11:44 AM > To: amd-gfx at lists.freedesktop.org > Subject: [PATCH 1/8] drm/amdgpu: cleanup kptr handling > > From: Christian König <christian.koenig at amd.com> > > Don't keep around the same pointer twice. > > Signed-off-by: Christian König <christian.koenig at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 26 +++++++++++++++-- > --------- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 ++-- > 5 files changed, 19 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index fe96236..c539bdd 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -427,7 +427,6 @@ struct amdgpu_bo { > struct ttm_bo_kmap_obj kmap; > u64 flags; > unsigned pin_count; > - void *kptr; > u64 tiling_flags; > u64 metadata_flags; > void *metadata; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c > index f0c8123..f48c780 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c > @@ -246,7 +246,7 @@ static int amdgpufb_create(struct drm_fb_helper > *helper, > tmp = amdgpu_bo_gpu_offset(abo) - adev->mc.vram_start; > info->fix.smem_start = adev->mc.aper_base + tmp; > info->fix.smem_len = amdgpu_bo_size(abo); > - info->screen_base = abo->kptr; > + info->screen_base = amdgpu_bo_kptr(abo); > info->screen_size = amdgpu_bo_size(abo); > > drm_fb_helper_fill_var(info, &rfbdev->helper, sizes->fb_width, > sizes->fb_height); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 3ec43cf..8fddea4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -609,16 +609,16 @@ int amdgpu_bo_restore_from_shadow(struct > amdgpu_device *adev, > > int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr) > { > - bool is_iomem; > + void *kptr; > long r; > > if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) > return -EPERM; > > - if (bo->kptr) { > - if (ptr) { > - *ptr = bo->kptr; > - } > + kptr = amdgpu_bo_kptr(bo); > + if (kptr) { > + if (ptr) > + *ptr = kptr; > return 0; > } > > @@ -631,19 +631,23 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void > **ptr) > if (r) > return r; > > - bo->kptr = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem); > if (ptr) > - *ptr = bo->kptr; > + *ptr = amdgpu_bo_kptr(bo); > > return 0; > } > > +void *amdgpu_bo_kptr(struct amdgpu_bo *bo) > +{ > + bool is_iomem; > + > + return ttm_kmap_obj_virtual(&bo->kmap, &is_iomem); > +} > + > void amdgpu_bo_kunmap(struct amdgpu_bo *bo) > { > - if (bo->kptr == NULL) > - return; > - bo->kptr = NULL; > - ttm_bo_kunmap(&bo->kmap); > + if (bo->kmap.bo) > + ttm_bo_kunmap(&bo->kmap); > } > > struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > index 833b172..f53d53d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > @@ -147,6 +147,7 @@ int amdgpu_bo_create_kernel(struct amdgpu_device > *adev, > void amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr, > void **cpu_addr); > int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr); > +void *amdgpu_bo_kptr(struct amdgpu_bo *bo); > void amdgpu_bo_kunmap(struct amdgpu_bo *bo); > struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo); > void amdgpu_bo_unref(struct amdgpu_bo **bo); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index fc482cc4..a1d4294 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1059,7 +1059,7 @@ static int amdgpu_vm_update_level(struct > amdgpu_device *adev, > shadow = parent->bo->shadow; > > if (vm->use_cpu_for_update) { > - pd_addr = (unsigned long)parent->bo->kptr; > + pd_addr = (unsigned long)amdgpu_bo_kptr(parent->bo); > r = amdgpu_vm_wait_pd(adev, vm, > AMDGPU_FENCE_OWNER_VM); > if (unlikely(r)) > return r; > @@ -1400,7 +1400,7 @@ static int amdgpu_vm_update_ptes(struct > amdgpu_pte_update_params *params, > > pt = entry->bo; > if (use_cpu_update) { > - pe_start = (unsigned long)pt->kptr; > + pe_start = (unsigned long)amdgpu_bo_kptr(pt); > } else { > if (pt->shadow) { > pe_start = amdgpu_bo_gpu_offset(pt- > >shadow); > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx