From bea4bb915a4a15042057a21170bcc2058f2bfb16 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Tue, 10 Jun 2014 13:40:12 -0700 Subject: 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 Reviewed-on: http://git-master/r/416435 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 3 +++ drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + 2 files changed, 4 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a') 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, if (verbose) gk20a_debug_dump(g->dev); + if (g->ops.ltc.flush) + g->ops.ltc.flush(g); + /* store faulted engines in advance */ g->fifo.mmu_fault_engines = 0; 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 { void (*elpg_flush)(struct gk20a *g); void (*isr)(struct gk20a *g); u32 (*cbc_fix_config)(struct gk20a *g, int base); + void (*flush)(struct gk20a *g); } ltc; struct { int (*init_fs_state)(struct gk20a *g); -- cgit v1.2.2