From 16ee09bb590d2c413d40a186743ecf003ac3c3d4 Mon Sep 17 00:00:00 2001 From: Aparna Das Date: Thu, 5 Jan 2017 10:45:02 -0800 Subject: gpu: nvgpu: vgpu: force gpu preepmtion policy Query the RM server to retrieve gpu preemption policy of guest based on pct configuration. If guest is not allowed to request wfi preemption mode then set context with either gfxp or cta preemption mode only. Jira VFND-3079 Jira VFND-3081 Change-Id: I60cbf121d6f0e2373568cf40b3dfdb4df76fe02d Signed-off-by: Aparna Das Reviewed-on: http://git-master/r/1280903 Reviewed-by: svccoveritychecker Reviewed-by: Sachit Kadle GVS: Gerrit_Virtual_Submit Reviewed-by: Vladislav Buzov --- drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c') diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c index 21fec478..749d6a15 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c @@ -56,6 +56,7 @@ static int vgpu_gr_gp10b_alloc_gr_ctx(struct gk20a *g, struct gr_ctx_desc *gr_ctx; u32 graphics_preempt_mode = 0; u32 compute_preempt_mode = 0; + struct vgpu_priv_data *priv = vgpu_get_priv_data(g); int err; gk20a_dbg_fn(""); @@ -71,6 +72,14 @@ static int vgpu_gr_gp10b_alloc_gr_ctx(struct gk20a *g, if (flags & NVGPU_ALLOC_OBJ_FLAGS_CILP) compute_preempt_mode = NVGPU_COMPUTE_PREEMPTION_MODE_CILP; + if (priv->constants.force_preempt_mode && !graphics_preempt_mode && + !compute_preempt_mode) { + graphics_preempt_mode = PASCAL_A == class ? + NVGPU_GRAPHICS_PREEMPTION_MODE_GFXP : 0; + compute_preempt_mode = PASCAL_COMPUTE_A == class ? + NVGPU_COMPUTE_PREEMPTION_MODE_CTA : 0; + } + if (graphics_preempt_mode || compute_preempt_mode) { if (g->ops.gr.set_ctxsw_preemption_mode) { err = g->ops.gr.set_ctxsw_preemption_mode(g, gr_ctx, vm, -- cgit v1.2.2