From 8cdb91c527ce19ce67ddc0e231e8c93a552a93a4 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 2 Feb 2017 15:16:33 +0530 Subject: gpu: nvgpu: remove use of DEFINE_MUTEX() API DEFINE_MUTEX() is defined in Linux and might not be available in other OSs. Hence remove its usage from nvgpu Declare and explicitly initialize below mutexes for both nvgpu and vgpu g->mm.priv_lock g->mm.tlb_lock Jira NVGPU-13 Change-Id: If72885a6da0227a1552303206172f1f2b751471d Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/1298042 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 12 +++++------- drivers/gpu/nvgpu/gk20a/mm_gk20a.h | 2 ++ 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a') diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 2539138a..c91acbd2 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -4811,15 +4811,15 @@ int gk20a_vm_bind_channel(struct gk20a_as_share *as_share, int gk20a_dmabuf_alloc_drvdata(struct dma_buf *dmabuf, struct device *dev) { + struct gk20a *g = gk20a_get_platform(dev)->g; struct gk20a_dmabuf_priv *priv; - static DEFINE_MUTEX(priv_lock); static u64 priv_count = 0; priv = dma_buf_get_drvdata(dmabuf, dev); if (likely(priv)) return 0; - nvgpu_mutex_acquire(&priv_lock); + nvgpu_mutex_acquire(&g->mm.priv_lock); priv = dma_buf_get_drvdata(dmabuf, dev); if (priv) goto priv_exist_or_err; @@ -4833,7 +4833,7 @@ int gk20a_dmabuf_alloc_drvdata(struct dma_buf *dmabuf, struct device *dev) priv->buffer_id = ++priv_count; dma_buf_set_drvdata(dmabuf, dev, priv, gk20a_mm_delete_priv); priv_exist_or_err: - nvgpu_mutex_release(&priv_lock); + nvgpu_mutex_release(&g->mm.priv_lock); if (IS_ERR(priv)) return -ENOMEM; @@ -5358,8 +5358,6 @@ void gk20a_mm_tlb_invalidate(struct vm_gk20a *vm) u32 addr_lo; u32 data; - static DEFINE_MUTEX(tlb_lock); - gk20a_dbg_fn(""); /* pagetables are considered sw states which are preserved after @@ -5373,7 +5371,7 @@ void gk20a_mm_tlb_invalidate(struct vm_gk20a *vm) addr_lo = u64_lo32(gk20a_mem_get_base_addr(g, &vm->pdb.mem, 0) >> 12); - nvgpu_mutex_acquire(&tlb_lock); + nvgpu_mutex_acquire(&g->mm.tlb_lock); trace_gk20a_mm_tlb_invalidate(dev_name(g->dev)); @@ -5414,7 +5412,7 @@ void gk20a_mm_tlb_invalidate(struct vm_gk20a *vm) trace_gk20a_mm_tlb_invalidate_done(dev_name(g->dev)); out: - nvgpu_mutex_release(&tlb_lock); + nvgpu_mutex_release(&g->mm.tlb_lock); } int gk20a_mm_suspend(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h index 5f29c9e7..d7f6cb9a 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h @@ -361,6 +361,8 @@ struct mm_gk20a { } ce; struct nvgpu_mutex l2_op_lock; + struct nvgpu_mutex tlb_lock; + struct nvgpu_mutex priv_lock; #ifdef CONFIG_ARCH_TEGRA_18x_SOC struct mem_desc bar2_desc; #endif -- cgit v1.2.2