summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2017-06-15 19:07:05 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-06-20 13:25:32 -0400
commit47eed280133ee75327942539c6d07e9b89d237f4 (patch)
tree6a9d8f29fb8fdccfdcdfa53c36f20d900ca4f234 /drivers/gpu/nvgpu/gv11b/mm_gv11b.c
parent3afd4af3a73b17317021f3dbca02dbc806a0fc5f (diff)
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 <sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/1503385 Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/mm_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/mm_gv11b.c10
1 files changed, 10 insertions, 0 deletions
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)
52 return false; 52 return false;
53} 53}
54 54
55void gv11b_mm_l2_flush(struct gk20a *g, bool invalidate)
56{
57 nvgpu_log(g, gpu_dbg_fn, "gv11b_mm_l2_flush");
58
59 g->ops.mm.fb_flush(g);
60 gk20a_mm_l2_flush(g, invalidate);
61 g->ops.mm.fb_flush(g);
62}
63
55void gv11b_init_mm(struct gpu_ops *gops) 64void gv11b_init_mm(struct gpu_ops *gops)
56{ 65{
57 gp10b_init_mm(gops); 66 gp10b_init_mm(gops);
@@ -59,4 +68,5 @@ void gv11b_init_mm(struct gpu_ops *gops)
59 gops->mm.init_inst_block = gv11b_init_inst_block; 68 gops->mm.init_inst_block = gv11b_init_inst_block;
60 gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw; 69 gops->mm.init_mm_setup_hw = gk20a_init_mm_setup_hw;
61 gops->mm.mmu_fault_pending = gv11b_mm_mmu_fault_pending; 70 gops->mm.mmu_fault_pending = gv11b_mm_mmu_fault_pending;
71 gops->mm.l2_flush = gv11b_mm_l2_flush;
62} 72}