Commit f5e1c740 authored by Christian König's avatar Christian König Committed by Alex Deucher

drm/amdgpu: cleanup kptr handling

Don't keep around the same pointer twice.
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4dbc9908
...@@ -425,7 +425,6 @@ struct amdgpu_bo { ...@@ -425,7 +425,6 @@ struct amdgpu_bo {
struct ttm_bo_kmap_obj kmap; struct ttm_bo_kmap_obj kmap;
u64 flags; u64 flags;
unsigned pin_count; unsigned pin_count;
void *kptr;
u64 tiling_flags; u64 tiling_flags;
u64 metadata_flags; u64 metadata_flags;
void *metadata; void *metadata;
......
...@@ -250,7 +250,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper, ...@@ -250,7 +250,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
tmp = amdgpu_bo_gpu_offset(abo) - adev->mc.vram_start; tmp = amdgpu_bo_gpu_offset(abo) - adev->mc.vram_start;
info->fix.smem_start = adev->mc.aper_base + tmp; info->fix.smem_start = adev->mc.aper_base + tmp;
info->fix.smem_len = amdgpu_bo_size(abo); 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); info->screen_size = amdgpu_bo_size(abo);
drm_fb_helper_fill_var(info, &rfbdev->helper, sizes->fb_width, sizes->fb_height); drm_fb_helper_fill_var(info, &rfbdev->helper, sizes->fb_width, sizes->fb_height);
......
...@@ -609,16 +609,16 @@ int amdgpu_bo_restore_from_shadow(struct amdgpu_device *adev, ...@@ -609,16 +609,16 @@ int amdgpu_bo_restore_from_shadow(struct amdgpu_device *adev,
int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr) int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)
{ {
bool is_iomem; void *kptr;
long r; long r;
if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)
return -EPERM; return -EPERM;
if (bo->kptr) { kptr = amdgpu_bo_kptr(bo);
if (ptr) { if (kptr) {
*ptr = bo->kptr; if (ptr)
} *ptr = kptr;
return 0; return 0;
} }
...@@ -631,19 +631,23 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr) ...@@ -631,19 +631,23 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)
if (r) if (r)
return r; return r;
bo->kptr = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem);
if (ptr) if (ptr)
*ptr = bo->kptr; *ptr = amdgpu_bo_kptr(bo);
return 0; 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) void amdgpu_bo_kunmap(struct amdgpu_bo *bo)
{ {
if (bo->kptr == NULL) if (bo->kmap.bo)
return; ttm_bo_kunmap(&bo->kmap);
bo->kptr = NULL;
ttm_bo_kunmap(&bo->kmap);
} }
struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo) struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo)
......
...@@ -147,6 +147,7 @@ int amdgpu_bo_create_kernel(struct amdgpu_device *adev, ...@@ -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 amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr,
void **cpu_addr); void **cpu_addr);
int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr); 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); void amdgpu_bo_kunmap(struct amdgpu_bo *bo);
struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo); struct amdgpu_bo *amdgpu_bo_ref(struct amdgpu_bo *bo);
void amdgpu_bo_unref(struct amdgpu_bo **bo); void amdgpu_bo_unref(struct amdgpu_bo **bo);
......
...@@ -1060,7 +1060,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, ...@@ -1060,7 +1060,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
shadow = parent->bo->shadow; shadow = parent->bo->shadow;
if (vm->use_cpu_for_update) { 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); r = amdgpu_vm_wait_pd(adev, vm, AMDGPU_FENCE_OWNER_VM);
if (unlikely(r)) if (unlikely(r))
return r; return r;
...@@ -1401,7 +1401,7 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params, ...@@ -1401,7 +1401,7 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params,
pt = entry->bo; pt = entry->bo;
if (use_cpu_update) { if (use_cpu_update) {
pe_start = (unsigned long)pt->kptr; pe_start = (unsigned long)amdgpu_bo_kptr(pt);
} else { } else {
if (pt->shadow) { if (pt->shadow) {
pe_start = amdgpu_bo_gpu_offset(pt->shadow); pe_start = amdgpu_bo_gpu_offset(pt->shadow);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment