diff options
author | Aparna Das <aparnad@nvidia.com> | 2017-01-05 13:45:02 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-14 22:58:19 -0400 |
commit | 16ee09bb590d2c413d40a186743ecf003ac3c3d4 (patch) | |
tree | 2ebfefbf5c48ceb3355f5502d626c923125b72b8 /drivers/gpu | |
parent | a4deb1079e6617d48dc1668daeb46fa2f1c84803 (diff) |
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 <aparnad@nvidia.com>
Reviewed-on: http://git-master/r/1280903
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Sachit Kadle <skadle@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vladislav Buzov <vbuzov@nvidia.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_gr_gp10b.c | 9 |
1 files changed, 9 insertions, 0 deletions
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, | |||
56 | struct gr_ctx_desc *gr_ctx; | 56 | struct gr_ctx_desc *gr_ctx; |
57 | u32 graphics_preempt_mode = 0; | 57 | u32 graphics_preempt_mode = 0; |
58 | u32 compute_preempt_mode = 0; | 58 | u32 compute_preempt_mode = 0; |
59 | struct vgpu_priv_data *priv = vgpu_get_priv_data(g); | ||
59 | int err; | 60 | int err; |
60 | 61 | ||
61 | gk20a_dbg_fn(""); | 62 | gk20a_dbg_fn(""); |
@@ -71,6 +72,14 @@ static int vgpu_gr_gp10b_alloc_gr_ctx(struct gk20a *g, | |||
71 | if (flags & NVGPU_ALLOC_OBJ_FLAGS_CILP) | 72 | if (flags & NVGPU_ALLOC_OBJ_FLAGS_CILP) |
72 | compute_preempt_mode = NVGPU_COMPUTE_PREEMPTION_MODE_CILP; | 73 | compute_preempt_mode = NVGPU_COMPUTE_PREEMPTION_MODE_CILP; |
73 | 74 | ||
75 | if (priv->constants.force_preempt_mode && !graphics_preempt_mode && | ||
76 | !compute_preempt_mode) { | ||
77 | graphics_preempt_mode = PASCAL_A == class ? | ||
78 | NVGPU_GRAPHICS_PREEMPTION_MODE_GFXP : 0; | ||
79 | compute_preempt_mode = PASCAL_COMPUTE_A == class ? | ||
80 | NVGPU_COMPUTE_PREEMPTION_MODE_CTA : 0; | ||
81 | } | ||
82 | |||
74 | if (graphics_preempt_mode || compute_preempt_mode) { | 83 | if (graphics_preempt_mode || compute_preempt_mode) { |
75 | if (g->ops.gr.set_ctxsw_preemption_mode) { | 84 | if (g->ops.gr.set_ctxsw_preemption_mode) { |
76 | err = g->ops.gr.set_ctxsw_preemption_mode(g, gr_ctx, vm, | 85 | err = g->ops.gr.set_ctxsw_preemption_mode(g, gr_ctx, vm, |