diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/nvgpu_mem.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/nvgpu_mem.c b/drivers/gpu/nvgpu/common/linux/nvgpu_mem.c index 2bf26602..1dbbd1a0 100644 --- a/drivers/gpu/nvgpu/common/linux/nvgpu_mem.c +++ b/drivers/gpu/nvgpu/common/linux/nvgpu_mem.c | |||
@@ -60,14 +60,6 @@ int nvgpu_mem_begin(struct gk20a *g, struct nvgpu_mem *mem) | |||
60 | { | 60 | { |
61 | void *cpu_va; | 61 | void *cpu_va; |
62 | 62 | ||
63 | if (WARN_ON(mem->cpu_accessible)) { | ||
64 | nvgpu_warn(g, "nested"); | ||
65 | return -EBUSY; | ||
66 | } | ||
67 | |||
68 | /* flag that the intent is to allow CPU access to the memory. */ | ||
69 | mem->cpu_accessible = true; | ||
70 | |||
71 | if (mem->aperture != APERTURE_SYSMEM || g->mm.force_pramin) | 63 | if (mem->aperture != APERTURE_SYSMEM || g->mm.force_pramin) |
72 | return 0; | 64 | return 0; |
73 | 65 | ||
@@ -79,14 +71,17 @@ int nvgpu_mem_begin(struct gk20a *g, struct nvgpu_mem *mem) | |||
79 | if (!(mem->priv.flags & NVGPU_DMA_NO_KERNEL_MAPPING)) | 71 | if (!(mem->priv.flags & NVGPU_DMA_NO_KERNEL_MAPPING)) |
80 | return 0; | 72 | return 0; |
81 | 73 | ||
74 | if (WARN_ON(mem->cpu_va)) { | ||
75 | nvgpu_warn(g, "nested"); | ||
76 | return -EBUSY; | ||
77 | } | ||
78 | |||
82 | cpu_va = vmap(mem->priv.pages, | 79 | cpu_va = vmap(mem->priv.pages, |
83 | PAGE_ALIGN(mem->size) >> PAGE_SHIFT, | 80 | PAGE_ALIGN(mem->size) >> PAGE_SHIFT, |
84 | 0, pgprot_writecombine(PAGE_KERNEL)); | 81 | 0, pgprot_writecombine(PAGE_KERNEL)); |
85 | 82 | ||
86 | if (WARN_ON(!cpu_va)) { | 83 | if (WARN_ON(!cpu_va)) |
87 | mem->cpu_accessible = false; | ||
88 | return -ENOMEM; | 84 | return -ENOMEM; |
89 | } | ||
90 | 85 | ||
91 | mem->cpu_va = cpu_va; | 86 | mem->cpu_va = cpu_va; |
92 | return 0; | 87 | return 0; |
@@ -94,8 +89,6 @@ int nvgpu_mem_begin(struct gk20a *g, struct nvgpu_mem *mem) | |||
94 | 89 | ||
95 | void nvgpu_mem_end(struct gk20a *g, struct nvgpu_mem *mem) | 90 | void nvgpu_mem_end(struct gk20a *g, struct nvgpu_mem *mem) |
96 | { | 91 | { |
97 | mem->cpu_accessible = false; | ||
98 | |||
99 | if (mem->aperture != APERTURE_SYSMEM || g->mm.force_pramin) | 92 | if (mem->aperture != APERTURE_SYSMEM || g->mm.force_pramin) |
100 | return; | 93 | return; |
101 | 94 | ||