summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/gr_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/gr_gp10b.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
index 374242bf..ee73fed1 100644
--- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
@@ -992,9 +992,15 @@ static int gr_gp10b_alloc_gr_ctx(struct gk20a *g,
992 compute_preempt_mode = NVGPU_COMPUTE_PREEMPTION_MODE_CILP; 992 compute_preempt_mode = NVGPU_COMPUTE_PREEMPTION_MODE_CILP;
993 993
994 if (graphics_preempt_mode || compute_preempt_mode) { 994 if (graphics_preempt_mode || compute_preempt_mode) {
995 err = gr_gp10b_set_ctxsw_preemption_mode(g, *gr_ctx, vm, 995 if (g->ops.gr.set_ctxsw_preemption_mode) {
996 err = g->ops.gr.set_ctxsw_preemption_mode(g, *gr_ctx, vm,
996 class, graphics_preempt_mode, compute_preempt_mode); 997 class, graphics_preempt_mode, compute_preempt_mode);
997 if (err) 998 if (err) {
999 gk20a_err(dev_from_gk20a(g),
1000 "set_ctxsw_preemption_mode failed");
1001 goto fail_free_gk20a_ctx;
1002 }
1003 } else
998 goto fail_free_gk20a_ctx; 1004 goto fail_free_gk20a_ctx;
999 } 1005 }
1000 1006
@@ -2067,10 +2073,15 @@ static int gr_gp10b_set_preemption_mode(struct channel_gk20a *ch,
2067 vm = ch->vm; 2073 vm = ch->vm;
2068 } 2074 }
2069 2075
2070 err = gr_gp10b_set_ctxsw_preemption_mode(g, gr_ctx, vm, class, 2076 if (g->ops.gr.set_ctxsw_preemption_mode) {
2071 graphics_preempt_mode, compute_preempt_mode); 2077 err = g->ops.gr.set_ctxsw_preemption_mode(g, gr_ctx, vm, class,
2072 if (err) 2078 graphics_preempt_mode, compute_preempt_mode);
2073 return err; 2079 if (err) {
2080 gk20a_err(dev_from_gk20a(g),
2081 "set_ctxsw_preemption_mode failed");
2082 return err;
2083 }
2084 }
2074 2085
2075 if (gk20a_mem_begin(g, mem)) 2086 if (gk20a_mem_begin(g, mem))
2076 return -ENOMEM; 2087 return -ENOMEM;
@@ -2225,6 +2236,7 @@ void gp10b_init_gr(struct gpu_ops *gops)
2225 gops->gr.get_lrf_tex_ltc_dram_override = get_ecc_override_val; 2236 gops->gr.get_lrf_tex_ltc_dram_override = get_ecc_override_val;
2226 gops->gr.suspend_contexts = gr_gp10b_suspend_contexts; 2237 gops->gr.suspend_contexts = gr_gp10b_suspend_contexts;
2227 gops->gr.set_preemption_mode = gr_gp10b_set_preemption_mode; 2238 gops->gr.set_preemption_mode = gr_gp10b_set_preemption_mode;
2239 gops->gr.set_ctxsw_preemption_mode = gr_gp10b_set_ctxsw_preemption_mode;
2228 gops->gr.get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags; 2240 gops->gr.get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags;
2229 gops->gr.fuse_override = gp10b_gr_fuse_override; 2241 gops->gr.fuse_override = gp10b_gr_fuse_override;
2230 gops->gr.load_smid_config = gr_gp10b_load_smid_config; 2242 gops->gr.load_smid_config = gr_gp10b_load_smid_config;