diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2016-04-27 09:32:43 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-05-09 16:16:53 -0400 |
commit | 771f742703bb56598bc341ec4eaee5ff7c036d4d (patch) | |
tree | a74d32db43c4fe87ee6d55a587a8f6de12490bbf /drivers/gpu/nvgpu/gm20b | |
parent | d868b654419cfa096f563c9281a2a5cc067c23db (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')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 18 |
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 | ||
1348 | static 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 | |||
1348 | void gm20b_init_gr(struct gpu_ops *gops) | 1365 | void 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 | } |