diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2017-06-15 19:07:05 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-20 13:25:32 -0400 |
commit | 47eed280133ee75327942539c6d07e9b89d237f4 (patch) | |
tree | 6a9d8f29fb8fdccfdcdfa53c36f20d900ca4f234 /drivers | |
parent | 3afd4af3a73b17317021f3dbca02dbc806a0fc5f (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')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/mm_gv11b.c | 10 |
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 | ||
55 | void 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 | |||
55 | void gv11b_init_mm(struct gpu_ops *gops) | 64 | void 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 | } |