From c3e18d9474f2bbbbd941c1941f86ad0df2ae3cf4 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 23 Aug 2018 16:46:15 +0530 Subject: gpu: nvgpu: support allocating CBC in vidmem Update nvgpu_ltc_alloc_cbc() API to accept a flag for vidmem allocation and allocate CBC memory into vidmem if flag is set Bug 2180284 Jira NVGPUT-12 Change-Id: Ia6b9bb670c9fab6b5787de15526fcc753d702a73 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/1805468 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/ltc.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/os/linux') diff --git a/drivers/gpu/nvgpu/os/linux/ltc.c b/drivers/gpu/nvgpu/os/linux/ltc.c index 1a58bc4e..8011f762 100644 --- a/drivers/gpu/nvgpu/os/linux/ltc.c +++ b/drivers/gpu/nvgpu/os/linux/ltc.c @@ -27,7 +27,8 @@ #include "gk20a/gk20a.h" #include "gk20a/gr_gk20a.h" -int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size) +int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size, + bool vidmem_alloc) { struct gr_gk20a *gr = &g->gr; unsigned long flags = 0; @@ -35,11 +36,25 @@ int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size) if (nvgpu_mem_is_valid(&gr->compbit_store.mem)) return 0; - if (!nvgpu_iommuable(g)) - flags = NVGPU_DMA_FORCE_CONTIGUOUS; + if (vidmem_alloc) { + /* + * Backing store MUST be physically contiguous and allocated in + * one chunk + * Vidmem allocation API does not support FORCE_CONTIGUOUS like + * flag to allocate contiguous memory + * But this allocation will happen in vidmem bootstrap allocator + * which always allocates contiguous memory + */ + return nvgpu_dma_alloc_vid(g, + compbit_backing_size, + &gr->compbit_store.mem); + } else { + if (!nvgpu_iommuable(g)) + flags = NVGPU_DMA_FORCE_CONTIGUOUS; - return nvgpu_dma_alloc_flags_sys(g, + return nvgpu_dma_alloc_flags_sys(g, flags, compbit_backing_size, &gr->compbit_store.mem); + } } -- cgit v1.2.2