From 30632cec54048944ee364781b4b8c2676ae5dfed Mon Sep 17 00:00:00 2001 From: Sami Kiminki Date: Mon, 26 Oct 2015 19:23:54 +0200 Subject: gpu: nvgpu: Implement NVGPU_GPU_IOCTL_GET_BUFFER_INFO Implement NVGPU_GPU_IOCTL_GET_BUFFER_INFO. The new IOCTL can be used to identify buffers and retrieve their sizes. This allows the userspace to be agnostic to the dmabuf implementation, as the generic dmabuf fd interface does not have a reliable way for buffer identification. Bug 1614735 Bug 1623949 Bug 1660392 Change-Id: Ic3dd0a9385c9852778110ccb80636dd6f4f36208 Signed-off-by: Sami Kiminki Reviewed-on: http://git-master/r/822845 Reviewed-on: http://git-master/r/833252 Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c index 3b5ca298..0b6b5913 100644 --- a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c @@ -514,6 +514,13 @@ static int gk20a_ctrl_vsm_mapping(struct gk20a *g, return err; } +static int gk20a_ctrl_get_buffer_info( + struct gk20a *g, struct nvgpu_gpu_get_buffer_info_args *args) +{ + return gk20a_mm_get_buffer_info(dev_from_gk20a(g), args->in.dmabuf_fd, + &args->out.id, &args->out.length); +} + long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct platform_device *dev = filp->private_data; @@ -729,6 +736,10 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg (struct nvgpu_gpu_vsms_mapping *)buf); break; + case NVGPU_GPU_IOCTL_GET_BUFFER_INFO: + err = gk20a_ctrl_get_buffer_info(g, + (struct nvgpu_gpu_get_buffer_info_args *)buf); + break; default: dev_dbg(dev_from_gk20a(g), "unrecognized gpu ioctl cmd: 0x%x", cmd); -- cgit v1.2.2