summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2016-04-27 09:32:43 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-05-09 16:16:53 -0400
commit771f742703bb56598bc341ec4eaee5ff7c036d4d (patch)
treea74d32db43c4fe87ee6d55a587a8f6de12490bbf /drivers/gpu/nvgpu/gm20b/gr_gm20b.c
parentd868b654419cfa096f563c9281a2a5cc067c23db (diff)
gpu: nvgpu: add supported preemptions to gpu characteristics
Add below flag fields to gpu characteristics to indicate supported and default preemption modes on platform for graphics and compute __u32 graphics_preemption_mode_flags; __u32 compute_preemption_mode_flags; __u32 default_graphics_preempt_mode; __u32 default_compute_preempt_mode; Add struct nvgpu_preemption_modes_rec to struct gr_gk20a to store these values locally Use platform specific get_preemption_mode_flags() to get the flags and define gk20a/gm20b specific get_preemption_mode_flags() API Bug 1646259 Change-Id: I80193c0d988dc93bd96585f9aa631fd817f4dfa3 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1133595 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/gr_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index dbe30f00..2a982f87 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -1345,6 +1345,23 @@ fail:
1345 return err; 1345 return err;
1346} 1346}
1347 1347
1348static int gr_gm20b_get_preemption_mode_flags(struct gk20a *g,
1349 struct nvgpu_preemption_modes_rec *preemption_modes_rec)
1350{
1351 preemption_modes_rec->graphics_preemption_mode_flags =
1352 NVGPU_GRAPHICS_PREEMPTION_MODE_WFI;
1353 preemption_modes_rec->compute_preemption_mode_flags = (
1354 NVGPU_COMPUTE_PREEMPTION_MODE_WFI |
1355 NVGPU_COMPUTE_PREEMPTION_MODE_CTA);
1356
1357 preemption_modes_rec->default_graphics_preempt_mode =
1358 NVGPU_GRAPHICS_PREEMPTION_MODE_WFI;
1359 preemption_modes_rec->default_compute_preempt_mode =
1360 NVGPU_COMPUTE_PREEMPTION_MODE_CTA;
1361
1362 return 0;
1363}
1364
1348void gm20b_init_gr(struct gpu_ops *gops) 1365void gm20b_init_gr(struct gpu_ops *gops)
1349{ 1366{
1350 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; 1367 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu;
@@ -1417,4 +1434,5 @@ void gm20b_init_gr(struct gpu_ops *gops)
1417 gops->gr.update_sm_error_state = gm20b_gr_update_sm_error_state; 1434 gops->gr.update_sm_error_state = gm20b_gr_update_sm_error_state;
1418 gops->gr.clear_sm_error_state = gm20b_gr_clear_sm_error_state; 1435 gops->gr.clear_sm_error_state = gm20b_gr_clear_sm_error_state;
1419 gops->gr.suspend_contexts = gr_gk20a_suspend_contexts; 1436 gops->gr.suspend_contexts = gr_gk20a_suspend_contexts;
1437 gops->gr.get_preemption_mode_flags = gr_gm20b_get_preemption_mode_flags;
1420} 1438}