summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
index 4dee3faf..7b617a03 100644
--- a/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctrl_gk20a.c
@@ -243,6 +243,20 @@ static int gk20a_ctrl_get_tpc_masks(struct gk20a *g,
243 return err; 243 return err;
244} 244}
245 245
246static int nvgpu_gpu_ioctl_l2_fb_ops(struct gk20a *g,
247 struct nvgpu_gpu_l2_fb_args *args)
248{
249 int err = 0;
250
251 if (args->l2_flush)
252 g->ops.mm.l2_flush(g, args->l2_invalidate ? true : false);
253
254 if (args->fb_flush)
255 g->ops.mm.fb_flush(g);
256
257 return err;
258}
259
246long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 260long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
247{ 261{
248 struct platform_device *dev = filp->private_data; 262 struct platform_device *dev = filp->private_data;
@@ -423,6 +437,10 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
423 err = gk20a_channel_open_ioctl(g, 437 err = gk20a_channel_open_ioctl(g,
424 (struct nvgpu_channel_open_args *)buf); 438 (struct nvgpu_channel_open_args *)buf);
425 break; 439 break;
440 case NVGPU_GPU_IOCTL_FLUSH_L2:
441 err = nvgpu_gpu_ioctl_l2_fb_ops(g,
442 (struct nvgpu_gpu_l2_fb_args *)buf);
443 break;
426 default: 444 default:
427 dev_dbg(dev_from_gk20a(g), "unrecognized gpu ioctl cmd: 0x%x", cmd); 445 dev_dbg(dev_from_gk20a(g), "unrecognized gpu ioctl cmd: 0x%x", cmd);
428 err = -ENOTTY; 446 err = -ENOTTY;