From 7a4cb4a6ab6c861a94e9105360967894df749f03 Mon Sep 17 00:00:00 2001 From: seshendra Gadagottu Date: Wed, 15 Nov 2017 14:35:43 -0800 Subject: gpu: nvgpu: gv11b: gfxp wfi timeout For gv11b, configured gfx preemption wfi timeout in usec. Set timeout unit as usec in gr_gv11b_init_preemption_state. Used default timeout as 1msec and this timeout value can be modified through sysfs node: /sys/devices/gpu.0/gfxp_wfi_timeout_count For gp10b: gfxp_wfi_timeout_count is in syclk cycles For gv11b: gfxp_wfi_timeout_count is in usec Bug 2003668 Change-Id: I68d52ce996a83df90b8b3a8164debb07e5cb370f Signed-off-by: seshendra Gadagottu Reviewed-on: https://git-master.nvidia.com/r/1599658 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c') diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index f2397108..9d6d8d05 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c @@ -54,6 +54,8 @@ #include #include +#define GFXP_WFI_TIMEOUT_COUNT_IN_USEC_DEFAULT 1000 + bool gr_gv11b_is_valid_class(struct gk20a *g, u32 class_num) { bool valid = false; @@ -3625,3 +3627,35 @@ void gr_gv11b_init_gpc_mmu(struct gk20a *g) gk20a_writel(g, gr_gpcs_pri_mmu_debug_rd_r(), gk20a_readl(g, fb_mmu_debug_rd_r())); } + +int gr_gv11b_init_preemption_state(struct gk20a *g) +{ + u32 debug_2; + struct gr_gk20a *gr = &g->gr; + + nvgpu_log_fn(g, " "); + + gk20a_writel(g, gr_fe_gfxp_wfi_timeout_r(), + gr_fe_gfxp_wfi_timeout_count_f( + gr->gfxp_wfi_timeout_count)); + + debug_2 = gk20a_readl(g, gr_debug_2_r()); + debug_2 = set_field(debug_2, + gr_debug_2_gfxp_wfi_timeout_unit_m(), + gr_debug_2_gfxp_wfi_timeout_unit_usec_f()); + gk20a_writel(g, gr_debug_2_r(), debug_2); + + return 0; +} +void gr_gv11b_init_gfxp_wfi_timeout_count(struct gk20a *g) +{ + struct gr_gk20a *gr = &g->gr; + + gr->gfxp_wfi_timeout_count = GFXP_WFI_TIMEOUT_COUNT_IN_USEC_DEFAULT; +} + +unsigned long gr_gv11b_get_max_gfxp_wfi_timeout_count(struct gk20a *g) +{ + /* 100 msec in usec count */ + return (100 * 1000UL); +} -- cgit v1.2.2