From 47eed280133ee75327942539c6d07e9b89d237f4 Mon Sep 17 00:00:00 2001 From: seshendra Gadagottu Date: Thu, 15 Jun 2017 16:07:05 -0700 Subject: gpu: nvgpu: gv11b: fb_flush before/after l2_flush After enabling l2 write back in gv11b, for committing all dirty data to sysmem correctly: Added one fb_flush before l2_flush to commit dirty hshub data to l2/sysmem. Added one more fb_flush after l2_flush, to commit any new dirty data on hshub to sysmem. This done by implementing gv11b specific l2_flush function. Bug 1937331 Change-Id: Ie30edb12c98c4021783c88750bb4c4ca62e4a7ca Signed-off-by: seshendra Gadagottu Reviewed-on: http://git-master/r/1503385 Reviewed-by: Alex Waterman Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gv11b/mm_gv11b.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'drivers/gpu/nvgpu/gv11b/mm_gv11b.c') diff --git a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c index 269108ff..9d1e0f25 100644 --- a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c @@ -52,6 +52,15 @@ static bool gv11b_mm_mmu_fault_pending(struct gk20a *g) return false; } +void gv11b_mm_l2_flush(struct gk20a *g, bool invalidate) +{ + nvgpu_log(g, gpu_dbg_fn, "gv11b_mm_l2_flush"); + + g->ops.mm.fb_flush(g); + gk20a_mm_l2_flush(g, invalidate); + g->ops.mm.fb_flush(g); +} + void gv11b_init_mm(struct gpu_ops *gops) { gp10b_init_mm(gops); @@ -59,4 +68,5 @@ void gv11b_init_mm(struct gpu_ops *gops) gops->mm.init_inst_block = gv11b_init_inst_block; gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw; gops->mm.mmu_fault_pending = gv11b_mm_mmu_fault_pending; + gops->mm.l2_flush = gv11b_mm_l2_flush; } -- cgit v1.2.2