From 59f07dcdc5480bd233d7e74ad733dc1f85d0b374 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Fri, 6 Jul 2018 09:41:08 -0700 Subject: gpu: nvgpu: Call handle_replayable_fault via HAL gr_gv11b.c had a direct dependency to fb_gv11b.c because it calls FB to process replayable faults while waiting for SM lockdown. Redirect that call via HAL to remove the dependency. JIRA NVGPU-714 Change-Id: Ie6df3658f06b1f867893bc98fe581c95813f0431 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/1772884 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 6 +++--- drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 4aa04139..4f02ce23 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -532,6 +532,7 @@ struct gpu_ops { void (*set_debug_mode)(struct gk20a *g, bool enable); void (*tlb_invalidate)(struct gk20a *g, struct nvgpu_mem *pdb); void (*hub_isr)(struct gk20a *g); + void (*handle_replayable_fault)(struct gk20a *g); int (*mem_unlock)(struct gk20a *g); int (*init_nvlink)(struct gk20a *g); int (*enable_nvlink)(struct gk20a *g); diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 1336557a..4280e8ff 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c @@ -48,7 +48,6 @@ #include "gv11b/subctx_gv11b.h" #include "gv11b/gv11b.h" #include "gv11b/gr_pri_gv11b.h" -#include "gv11b/fb_gv11b.h" #include #include @@ -3741,8 +3740,9 @@ int gv11b_gr_wait_for_sm_lock_down(struct gk20a *g, return 0; } - if (mmu_debug_mode_enabled) { - gv11b_fb_handle_replayable_mmu_fault(g); + if (mmu_debug_mode_enabled && + g->ops.fb.handle_replayable_fault != NULL) { + g->ops.fb.handle_replayable_fault(g); } else { /* if an mmu fault is pending and mmu debug mode is not * enabled, the sm will never lock down. diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 9e9387d0..5bfa85da 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c @@ -439,6 +439,7 @@ static const struct gpu_ops gv11b_ops = { .set_debug_mode = gm20b_fb_set_debug_mode, .tlb_invalidate = gk20a_fb_tlb_invalidate, .hub_isr = gv11b_fb_hub_isr, + .handle_replayable_fault = gv11b_fb_handle_replayable_mmu_fault, .mem_unlock = NULL, .enable_hub_intr = gv11b_fb_enable_hub_intr, .disable_hub_intr = gv11b_fb_disable_hub_intr, -- cgit v1.2.2