From 771f742703bb56598bc341ec4eaee5ff7c036d4d Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Wed, 27 Apr 2016 19:02:43 +0530 Subject: 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 Reviewed-on: http://git-master/r/1133595 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'drivers/gpu/nvgpu/gm20b/gr_gm20b.c') 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: return err; } +static int gr_gm20b_get_preemption_mode_flags(struct gk20a *g, + struct nvgpu_preemption_modes_rec *preemption_modes_rec) +{ + preemption_modes_rec->graphics_preemption_mode_flags = + NVGPU_GRAPHICS_PREEMPTION_MODE_WFI; + preemption_modes_rec->compute_preemption_mode_flags = ( + NVGPU_COMPUTE_PREEMPTION_MODE_WFI | + NVGPU_COMPUTE_PREEMPTION_MODE_CTA); + + preemption_modes_rec->default_graphics_preempt_mode = + NVGPU_GRAPHICS_PREEMPTION_MODE_WFI; + preemption_modes_rec->default_compute_preempt_mode = + NVGPU_COMPUTE_PREEMPTION_MODE_CTA; + + return 0; +} + void gm20b_init_gr(struct gpu_ops *gops) { gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; @@ -1417,4 +1434,5 @@ void gm20b_init_gr(struct gpu_ops *gops) gops->gr.update_sm_error_state = gm20b_gr_update_sm_error_state; gops->gr.clear_sm_error_state = gm20b_gr_clear_sm_error_state; gops->gr.suspend_contexts = gr_gk20a_suspend_contexts; + gops->gr.get_preemption_mode_flags = gr_gm20b_get_preemption_mode_flags; } -- cgit v1.2.2