From 465d76f91c3d5b0bfe29f3959a0071fa2dae2b94 Mon Sep 17 00:00:00 2001 From: Sami Kiminki Date: Fri, 9 May 2014 18:58:13 +0300 Subject: gpu: nvgpu: Handle missing DMA address If DMA address is not defined, use the physical address. Bug 1500983 Change-Id: Ic33b21f74c8c2760e43146b87eec7ea467fc87be Signed-off-by: Sami Kiminki (cherry picked from commit 8ae9a6567349241ce1cfff383526b0d9d39c28a1) Reviewed-on: http://git-master/r/415238 Reviewed-by: Riham Haidar Tested-by: Riham Haidar --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index af7e0b51..d2174f37 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -1284,6 +1284,7 @@ u64 gk20a_vm_map(struct vm_gk20a *vm, int err = 0; struct buffer_attrs bfr = {0}; struct gk20a_comptags comptags; + u64 buf_addr; mutex_lock(&vm->update_gmmu_lock); @@ -1316,7 +1317,10 @@ u64 gk20a_vm_map(struct vm_gk20a *vm, bfr.kind_v = kind; bfr.size = dmabuf->size; - bfr.align = 1 << __ffs((u64)sg_dma_address(bfr.sgt->sgl)); + buf_addr = (u64)sg_dma_address(bfr.sgt->sgl); + if (unlikely(!buf_addr)) + buf_addr = (u64)sg_phys(bfr.sgt->sgl); + bfr.align = 1 << __ffs(buf_addr); bfr.pgsz_idx = -1; /* If FIX_OFFSET is set, pgsz is determined. Otherwise, select -- cgit v1.2.2