summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2018-08-23 07:16:15 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-06 19:12:24 -0400
commitc3e18d9474f2bbbbd941c1941f86ad0df2ae3cf4 (patch)
treeeea2cf335372b0f51843b8972000158a230f11fd /drivers/gpu/nvgpu/os
parent8e66c5816dfea8e321c4745e6a4385770b62c9d0 (diff)
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 <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1805468 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/os')
-rw-r--r--drivers/gpu/nvgpu/os/linux/ltc.c23
-rw-r--r--drivers/gpu/nvgpu/os/posix/stubs.c3
2 files changed, 21 insertions, 5 deletions
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 @@
27#include "gk20a/gk20a.h" 27#include "gk20a/gk20a.h"
28#include "gk20a/gr_gk20a.h" 28#include "gk20a/gr_gk20a.h"
29 29
30int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size) 30int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size,
31 bool vidmem_alloc)
31{ 32{
32 struct gr_gk20a *gr = &g->gr; 33 struct gr_gk20a *gr = &g->gr;
33 unsigned long flags = 0; 34 unsigned long flags = 0;
@@ -35,11 +36,25 @@ int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size)
35 if (nvgpu_mem_is_valid(&gr->compbit_store.mem)) 36 if (nvgpu_mem_is_valid(&gr->compbit_store.mem))
36 return 0; 37 return 0;
37 38
38 if (!nvgpu_iommuable(g)) 39 if (vidmem_alloc) {
39 flags = NVGPU_DMA_FORCE_CONTIGUOUS; 40 /*
41 * Backing store MUST be physically contiguous and allocated in
42 * one chunk
43 * Vidmem allocation API does not support FORCE_CONTIGUOUS like
44 * flag to allocate contiguous memory
45 * But this allocation will happen in vidmem bootstrap allocator
46 * which always allocates contiguous memory
47 */
48 return nvgpu_dma_alloc_vid(g,
49 compbit_backing_size,
50 &gr->compbit_store.mem);
51 } else {
52 if (!nvgpu_iommuable(g))
53 flags = NVGPU_DMA_FORCE_CONTIGUOUS;
40 54
41 return nvgpu_dma_alloc_flags_sys(g, 55 return nvgpu_dma_alloc_flags_sys(g,
42 flags, 56 flags,
43 compbit_backing_size, 57 compbit_backing_size,
44 &gr->compbit_store.mem); 58 &gr->compbit_store.mem);
59 }
45} 60}
diff --git a/drivers/gpu/nvgpu/os/posix/stubs.c b/drivers/gpu/nvgpu/os/posix/stubs.c
index 1e50930a..279f4daa 100644
--- a/drivers/gpu/nvgpu/os/posix/stubs.c
+++ b/drivers/gpu/nvgpu/os/posix/stubs.c
@@ -43,7 +43,8 @@ void nvgpu_ecc_sysfs_remove(struct gk20a *g)
43{ 43{
44} 44}
45 45
46int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size) 46int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size,
47 bool vidmem_alloc)
47{ 48{
48 return 0; 49 return 0;
49} 50}