diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 3cda3034..b1d709f0 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -823,7 +823,7 @@ static int gk20a_init_vidmem(struct mm_gk20a *mm) | |||
823 | 823 | ||
824 | INIT_WORK(&mm->vidmem.clear_mem_worker, gk20a_vidmem_clear_mem_worker); | 824 | INIT_WORK(&mm->vidmem.clear_mem_worker, gk20a_vidmem_clear_mem_worker); |
825 | atomic64_set(&mm->vidmem.bytes_pending, 0); | 825 | atomic64_set(&mm->vidmem.bytes_pending, 0); |
826 | INIT_LIST_HEAD(&mm->vidmem.clear_list_head); | 826 | nvgpu_init_list_node(&mm->vidmem.clear_list_head); |
827 | nvgpu_mutex_init(&mm->vidmem.clear_list_mutex); | 827 | nvgpu_mutex_init(&mm->vidmem.clear_list_mutex); |
828 | 828 | ||
829 | gk20a_dbg_info("registered vidmem: %zu MB", size / SZ_1M); | 829 | gk20a_dbg_info("registered vidmem: %zu MB", size / SZ_1M); |
@@ -3012,7 +3012,7 @@ int gk20a_gmmu_alloc_flags_vid_at(struct gk20a *g, unsigned long flags, | |||
3012 | mem->aperture = APERTURE_VIDMEM; | 3012 | mem->aperture = APERTURE_VIDMEM; |
3013 | mem->allocator = vidmem_alloc; | 3013 | mem->allocator = vidmem_alloc; |
3014 | 3014 | ||
3015 | INIT_LIST_HEAD(&mem->clear_list_entry); | 3015 | nvgpu_init_list_node(&mem->clear_list_entry); |
3016 | 3016 | ||
3017 | gk20a_dbg_fn("done at 0x%llx size %zu", addr, size); | 3017 | gk20a_dbg_fn("done at 0x%llx size %zu", addr, size); |
3018 | 3018 | ||
@@ -3038,8 +3038,8 @@ static void gk20a_gmmu_free_vid(struct gk20a *g, struct mem_desc *mem) | |||
3038 | 3038 | ||
3039 | if (mem->user_mem) { | 3039 | if (mem->user_mem) { |
3040 | nvgpu_mutex_acquire(&g->mm.vidmem.clear_list_mutex); | 3040 | nvgpu_mutex_acquire(&g->mm.vidmem.clear_list_mutex); |
3041 | was_empty = list_empty(&g->mm.vidmem.clear_list_head); | 3041 | was_empty = nvgpu_list_empty(&g->mm.vidmem.clear_list_head); |
3042 | list_add_tail(&mem->clear_list_entry, | 3042 | nvgpu_list_add_tail(&mem->clear_list_entry, |
3043 | &g->mm.vidmem.clear_list_head); | 3043 | &g->mm.vidmem.clear_list_head); |
3044 | atomic64_add(mem->size, &g->mm.vidmem.bytes_pending); | 3044 | atomic64_add(mem->size, &g->mm.vidmem.bytes_pending); |
3045 | nvgpu_mutex_release(&g->mm.vidmem.clear_list_mutex); | 3045 | nvgpu_mutex_release(&g->mm.vidmem.clear_list_mutex); |
@@ -3102,10 +3102,11 @@ static struct mem_desc *get_pending_mem_desc(struct mm_gk20a *mm) | |||
3102 | struct mem_desc *mem = NULL; | 3102 | struct mem_desc *mem = NULL; |
3103 | 3103 | ||
3104 | nvgpu_mutex_acquire(&mm->vidmem.clear_list_mutex); | 3104 | nvgpu_mutex_acquire(&mm->vidmem.clear_list_mutex); |
3105 | mem = list_first_entry_or_null(&mm->vidmem.clear_list_head, | 3105 | if (!nvgpu_list_empty(&mm->vidmem.clear_list_head)) { |
3106 | struct mem_desc, clear_list_entry); | 3106 | mem = nvgpu_list_first_entry(&mm->vidmem.clear_list_head, |
3107 | if (mem) | 3107 | mem_desc, clear_list_entry); |
3108 | list_del_init(&mem->clear_list_entry); | 3108 | nvgpu_list_del(&mem->clear_list_entry); |
3109 | } | ||
3109 | nvgpu_mutex_release(&mm->vidmem.clear_list_mutex); | 3110 | nvgpu_mutex_release(&mm->vidmem.clear_list_mutex); |
3110 | 3111 | ||
3111 | return mem; | 3112 | return mem; |