diff --git a/drivers/gpu/nvgpu/common/posix/dma.c b/drivers/gpu/nvgpu/common/posix/dma.c index 23f595016..95bb1a752 100644 --- a/drivers/gpu/nvgpu/common/posix/dma.c +++ b/drivers/gpu/nvgpu/common/posix/dma.c @@ -110,6 +110,14 @@ int nvgpu_dma_alloc_flags_vid(struct gk20a *g, unsigned long flags, return __nvgpu_do_dma_alloc(g, flags, size, mem, APERTURE_VIDMEM); } +int nvgpu_dma_alloc_vid_at(struct gk20a *g, + size_t size, struct nvgpu_mem *mem, u64 at) +{ + BUG(); + + return 0; +} + int nvgpu_dma_alloc_flags_vid_at(struct gk20a *g, unsigned long flags, size_t size, struct nvgpu_mem *mem, u64 at) { diff --git a/drivers/gpu/nvgpu/include/nvgpu/dma.h b/drivers/gpu/nvgpu/include/nvgpu/dma.h index c0397b584..d83346a3e 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/dma.h +++ b/drivers/gpu/nvgpu/include/nvgpu/dma.h @@ -167,6 +167,24 @@ int nvgpu_dma_alloc_vid(struct gk20a *g, size_t size, struct nvgpu_mem *mem); int nvgpu_dma_alloc_flags_vid(struct gk20a *g, unsigned long flags, size_t size, struct nvgpu_mem *mem); + +/** + * nvgpu_dma_alloc_flags_vid_at - Allocate DMA memory + * + * @g - The GPU. + * @size - Size of the allocation in bytes. + * @mem - Struct for storing the allocation information. + * @at - A specific location to attempt to allocate memory from or 0 if the + * caller does not care what the address is. + * + * Allocate memory suitable for doing DMA. Store the allocation info in @mem. + * Returns 0 on success and a suitable error code when there's an error. This + * allocates memory specifically in VIDMEM. + * + */ +int nvgpu_dma_alloc_vid_at(struct gk20a *g, + size_t size, struct nvgpu_mem *mem, u64 at); + /** * nvgpu_dma_alloc_flags_vid_at - Allocate DMA memory * diff --git a/drivers/gpu/nvgpu/os/linux/dma.c b/drivers/gpu/nvgpu/os/linux/dma.c index f513dcd6f..51c8323a8 100644 --- a/drivers/gpu/nvgpu/os/linux/dma.c +++ b/drivers/gpu/nvgpu/os/linux/dma.c @@ -313,6 +313,13 @@ int nvgpu_dma_alloc_flags_vid(struct gk20a *g, unsigned long flags, return nvgpu_dma_alloc_flags_vid_at(g, flags, size, mem, 0); } +int nvgpu_dma_alloc_vid_at(struct gk20a *g, + size_t size, struct nvgpu_mem *mem, u64 at) +{ + return nvgpu_dma_alloc_flags_vid_at(g, + NVGPU_DMA_NO_KERNEL_MAPPING, size, mem, at); +} + int nvgpu_dma_alloc_flags_vid_at(struct gk20a *g, unsigned long flags, size_t size, struct nvgpu_mem *mem, u64 at) {