diff options
author | Alex Waterman <alexw@nvidia.com> | 2014-06-10 16:40:12 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:11 -0400 |
commit | bea4bb915a4a15042057a21170bcc2058f2bfb16 (patch) | |
tree | 175e9f29bbd9d5dea43e10f96730dddfe50cdf91 /drivers/gpu/nvgpu/gk20a | |
parent | ead2962f42a2c8772591b20c0e153d4ba7fb2203 (diff) |
gpu: nvgpu: Implement L2 flush in fifo recovery
Implement a full L2 flush (clean and invalidate) for gm20b in
the fifo recovery path.
Bug 1512176
Change-Id: Ibf89ede9cca65a6868ebff89825869053302a007
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Reviewed-on: http://git-master/r/416435
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index f246c73e..cba1f0fd 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |||
@@ -1200,6 +1200,9 @@ void gk20a_fifo_recover(struct gk20a *g, u32 __engine_ids, | |||
1200 | if (verbose) | 1200 | if (verbose) |
1201 | gk20a_debug_dump(g->dev); | 1201 | gk20a_debug_dump(g->dev); |
1202 | 1202 | ||
1203 | if (g->ops.ltc.flush) | ||
1204 | g->ops.ltc.flush(g); | ||
1205 | |||
1203 | /* store faulted engines in advance */ | 1206 | /* store faulted engines in advance */ |
1204 | g->fifo.mmu_fault_engines = 0; | 1207 | g->fifo.mmu_fault_engines = 0; |
1205 | for_each_set_bit(engine_id, &_engine_ids, 32) { | 1208 | for_each_set_bit(engine_id, &_engine_ids, 32) { |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index d8ceecd7..726994ff 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -82,6 +82,7 @@ struct gpu_ops { | |||
82 | void (*elpg_flush)(struct gk20a *g); | 82 | void (*elpg_flush)(struct gk20a *g); |
83 | void (*isr)(struct gk20a *g); | 83 | void (*isr)(struct gk20a *g); |
84 | u32 (*cbc_fix_config)(struct gk20a *g, int base); | 84 | u32 (*cbc_fix_config)(struct gk20a *g, int base); |
85 | void (*flush)(struct gk20a *g); | ||
85 | } ltc; | 86 | } ltc; |
86 | struct { | 87 | struct { |
87 | int (*init_fs_state)(struct gk20a *g); | 88 | int (*init_fs_state)(struct gk20a *g); |