From 758cb76e225775ba5ac3dd2cb9415cb40dc83810 Mon Sep 17 00:00:00 2001 From: Konsta Holtta Date: Tue, 11 Sep 2018 14:47:42 +0300 Subject: gpu: nvgpu: add FOREIGN_SGT mem flag Add an internal flag NVGPU_MEM_FLAG_FOREIGN_SGT to specify that the sgt member of an nvgpu_mem must not be freed when the nvgpu_mem is freed. Bug 200145225 Bug 200541476 Change-Id: I044fb91a5f9d148f38fb0cbf63d0cdfd64a070ce Signed-off-by: Konsta Holtta Reviewed-on: https://git-master.nvidia.com/r/1819801 Signed-off-by: Debarshi Dutta (cherry picked from commit 9de6d20abb8fef0cd11c22676846d809ee3f9afc in dev-main) Reviewed-on: https://git-master.nvidia.com/r/2170602 GVS: Gerrit_Virtual_Submit Reviewed-by: Bibek Basu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/linux-dma.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'drivers/gpu/nvgpu/os') diff --git a/drivers/gpu/nvgpu/os/linux/linux-dma.c b/drivers/gpu/nvgpu/os/linux/linux-dma.c index 52987a87..d704b2a4 100644 --- a/drivers/gpu/nvgpu/os/linux/linux-dma.c +++ b/drivers/gpu/nvgpu/os/linux/linux-dma.c @@ -392,8 +392,10 @@ void nvgpu_dma_free_sys(struct gk20a *g, struct nvgpu_mem *mem) if (mem->mem_flags & __NVGPU_MEM_FLAG_NO_DMA) nvgpu_kfree(g, mem->priv.pages); - if (mem->priv.sgt) + if ((mem->mem_flags & NVGPU_MEM_FLAG_FOREIGN_SGT) == 0 && + mem->priv.sgt != NULL) { nvgpu_free_sgtable(g, &mem->priv.sgt); + } dma_dbg_free_done(g, mem->size, "sysmem"); -- cgit v1.2.2